代码: 全选
def outer(x):
def inner(i):
print i,
if i:inner(i-1)
inner(x)
outer(3)
嵌套的函数对自己的局部作用域,包含自己的模块的全局作用域以及内置的名字作用域有访问权,对包含自己的函数的作用域无访问权.
但是为什么在我这里 这段代码完全可以执行而没有任何错误
是书太古老了吗?还是新版本的python增加了这样的内容?
代码: 全选
def outer(x):
def inner(i):
print i,
if i:inner(i-1)
inner(x)
outer(3)
我也是用的老书了 在2.1版中的嵌套作用域中 ,这种没定义在它所属的定义域的变量给了个名字叫自由变量,引用这种变量,使用与当前引用变量的代码块最近的且包含它的作用域。所以编译不报错。richardfreeman 写了:可能是inner绑定到了模块上,这样它既是局部的,又是全局的