Python3 nonlocal

来源:互联网 发布:淘宝面单打印软件 编辑:程序博客网 时间:2024/06/07 04:04

在Python 2.x中,闭包只能读外部函数的变量,而不能改写它。

举例来说,这样是合法的:

def a():  x = 0  def b():    print locals()    y = x + 1    print locals()    print x, y  return ba()()
而这样是非法的:

def a():  x = 0  def b():    print locals()    y = x + 1    print locals()    x = 1    print x, y  return ba()()

为了解决这个问题,Python 3.x引入了nonlocal关键字

只要在闭包内用nonlocal声明变量,就可以让解释器在外层函数中查找变量名了,例如:

def a():  x = 0  def b():    nonlocal x    x += 1    print x  return ba()()



0 0
原创粉丝点击