请问没用nonlocal为什么下面代码依然能正常运行
无论x是在函数内还是函数外被定义,函数没有用nonlocal,但却都识别了x的值,为什么呢?>>> def abc():
x=3
def ccc():
a=2*x
return a
return ccc()
>>> abc()
6
-----------------------------------------
>>> x=5
>>> def abc():
def ccc():
a=2*x
return a
return ccc()
>>> abc()
10 因为这些x的作用域涵盖了闭包函数ccc 可以识别,但是不能赋值。
所以你单独访问x的值是可以的,
就是不能x *= x这样的。 可以访问,不可以修改 可以访问,但是不能修改。修改就要加 nonlocal 或者 global 。
页:
[1]