ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

学习笔记9.27

学习笔记9.27 这周我系统学习了 Python 中的作用域、全局变量、函数定义以及 global 关键字。与其说收获了几个语法点不如说终于把之前零散写代码时那些为什么这里报错为什么改了没生效的疑惑串成了一条线。这篇博客想理性地梳理一下这几天的理解不吹不黑只记录真实想通的地方和仍然存疑的地方。 以前写代码是变量随手就写这周才真正理解变量名不是随处可用的它有自己的势力范围。Python 的作用域大致遵循 LEGB 规则也就是从内到外分四层当前函数内部、外层嵌套函数、模块全局、内置命名空间。查找一个名字时Python 按这个由内到外的顺序找找到就停。这个规则本身不难记难的是理解它带来的几个反直觉现象。 比如在函数内部如果某个名字既有打印操作、后面又有赋值操作程序运行时就会报错。原因是函数体内只要对某个名字有赋值Python 在编译阶段就把它认定为局部变量于是前面打印时局部变量还没赋值自然报错。这个坑我之前踩过当时只觉得莫名其妙现在明白是作用域判定发生在运行之前而不是按行执行时才决定。
返回列表