【发布时间】:2016-12-13 07:37:45
【问题描述】:
我对 LEGB 的规则如何在这里应用感到很困惑。一世 了解 Local 可以在函数或类方法中,因为 例子。 Enclosed 可以是它的封闭函数,例如,如果一个函数 被包裹在另一个函数中。全局指的是最上面的 执行脚本本身的级别,而 Built-in 是特殊名称 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')
【问题讨论】:
-
我在 python 3.5.2 中得到不同的输出。
标签: python scope namespaces closures