def creatCounter(): f = [0] def counter(): f[0] += 1 return f[0] return counter
闭包内能访问闭包外的变量,但不可以修改,除非用到nonlocal,同一个返回函数的对象重复执行的时候,仅重复执行闭包内的函数,闭包外的函数只执行一次。 f1 = creatCounter() f2 = creatCounter() print(f1(),f2()) 如果这样执行结果是1 1,如果print(f1(),f1()),结果就是1 2
def creatCounter(): num = 0 def counter(): nonlocal num num += 1 return num return counter
nonlocal是在闭包内申明变量,表示这个变量不管在闭包内还是闭包外都可以修改。 f = creatCounter() print(f(),f())这样的结果也是1 2
谢谢,听完您的讲解,豁然开朗
Sign in to make a reply
莉莉娅的小暖炉
def creatCounter(): f = [0] def counter(): f[0] += 1 return f[0] return counter
闭包内能访问闭包外的变量,但不可以修改,除非用到nonlocal,同一个返回函数的对象重复执行的时候,仅重复执行闭包内的函数,闭包外的函数只执行一次。 f1 = creatCounter() f2 = creatCounter() print(f1(),f2()) 如果这样执行结果是1 1,如果print(f1(),f1()),结果就是1 2
def creatCounter(): num = 0 def counter(): nonlocal num num += 1 return num
return counter
nonlocal是在闭包内申明变量,表示这个变量不管在闭包内还是闭包外都可以修改。 f = creatCounter() print(f(),f())这样的结果也是1 2