One - One Code All

Blog Content

Python中的作用域及global用法

Python   2019-02-28 07:56:48

Python 中,一个变量的作用域总是由在代码中被赋值的地方所决定的。


函数定义了本地作用域,而模块定义的是全局作用域。

如果想要在函数内定义全局作用域,需要加上global修饰符。

变量名解析:LEGB原则

当在函数中使用未认证的变量名时,Python搜索4个作用域


[本地作用域(L)(函数内部声明但没有使用global的变量),之后是上一层结构中def或者lambda的本地作用域(E),之后是全局作用域(G)(函数中使用global声明的变量或在模块层声明的变量),最后是内置作用域(B)(即python的内置类和函数等)]并且在第一处能够找到这个变量名的地方停下来。


如果变量名在整个的搜索过程中都没有找到,Python就会报错。


补:上面的变量规则只适用于简单对象,当出现引用对象的属性时,则有另一套搜索规则:属性引用搜索一个或多个对象,而不是作用域,并且有可能涉及到所谓的"继承"。



上一篇:python中jinja模板引擎
下一篇:macbook 编译时出现stdio.h file not found 的解决办法,use Software Update to install updates

The minute you think of giving up, think of the reason why you held on so long.