Python中nonlocal关键字
示例如下:
1.python3.0 使用nonlocal关键字
>>> def outer(): x = 1 def inner(): nonlocal x x = 2 print("inner:", x) inner() print("outer:", x) >>> outer() inner: 2 outer: 2
2.python2.x 借助list或dict实现
>>> def outer(): x = [1] def inner(): x[0] += 1 #修改x[0]保存的值 print("inner:", x[0]) inner() print("outer:", x[0]) >>> outer() inner: 2 outer: 2
更多参考资料:
1. http://*.com/questions/1261875/python-nonlocal-statement
2.javascript中作用域链定义与python作用域的异同
3.官方文档:
“The nonlocal statement causes the listed identifiers to refer to previously bound variables in the nearest enclosing scope. This is important because the default behavior for binding is to search the local namespace first. The statement allows encapsulated code to rebind variables outside of the local scope besides the global (module) scope.
Names listed in a nonlocal statement, unlike to those listed in a global statement, must refer to pre-existing bindings in an enclosing scope (the scope in which a new binding should be created cannot be determined unambiguously).
Names listed in a nonlocal statement must not collide with pre-existing bindings in the local scope.“
上一篇: 检测数据库是否连接
下一篇: CSS3圆环动态弹出菜单