[英]Namespace - scope python
我对LEGB的规则在这里如何适用感到非常困惑。 我知道Local可以位于函数或类方法之内。 可以包含其封闭功能,例如,如果一个功能包装在另一个功能内。 全局是指执行脚本本身的最高级,而“内置”是Python为其保留的特殊名称。 我只是不知道它在这里如何应用以及>为什么输出是它的原样。谢谢
a = 'global'
def outer():
def len(in_var):
print('called my len() function: ')
l = 0
for i in in_var:
l += 1
return l
a = 'local'
def inner():
global len
nonlocal a
a += ' variable'
inner()
print('a is', a)
print(len(a))
outer()
print(len(a))
print('a is', a)
输出
('a is', 'local')
called my len() function:
5
15
('a is', 'global variable')
我正在用3.4.2跟踪结果
a is local variable
called my len() function:
14
6
a is global
对于解释,其实你有几乎所有重要的细节,但关键的一点是nonlocal
语句导致的标识来指代之前绑定变量在最近的封闭范围,这意味着a
在inner()
是指,影响a = 'local'
所以之后 print('a is', a)
使用a作为local variable
,长度为14。但是在全局范围内, a = 'global'
仍然有效。
您能否分享您的环境细节,以便我们调查差异?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.