如何在Python中定义自由变量?
- 论坛
- 如何在Python中定义自由变量?
10 浏览
如何在Python中定义自由变量?
从Python文档中可以找到关于局部/全局/自由变量的定义:
如果一个名称在一个代码块中被绑定,它是该代码块的局部变量,除非声明为非局部变量。如果一个名称在模块级别被绑定,它是一个全局变量。(模块代码块的变量既是局部的也是全局的。)如果一个变量在代码块中被使用但没有在其中定义,它是一个自由变量。
代码1:
>>> x = 0 >>> def foo(): ... print(x) ... print(locals()) ... >>> foo() 0 {}
代码2:
>>> def bar(): ... x = 1 ... def foo(): ... print(x) ... print(locals()) ... foo() ... >>> bar() 1 {'x':1}
当locals()
在函数块中调用时,会返回自由变量,但在类块中不会返回。
在代码1
中,x
是一个全局变量,在foo()
中被使用但未定义。
然而它不是一个自由变量,因为它没有被locals()
返回。
我认为这并不符合文档中的说法。是否有关于自由变量的技术定义?