赞
踩
- def count():
- fs = []
- for i in range(1, 4):
- def f():
- return i*i
- fs.append(f)
- return fs
-
- f1, f2, f3 = count()
- print(f1(),f2(),f3())
运行结果为9 9 9 ,而不是1,4,9,因为返回函数有i,闭包函数又可以称为延迟计算,所以会等循环结束时再进行计算,此时i=3,所以会得到9 9 9
- x = 10
- def outter(x):
- x = 10
- def inner():
- print(x)
- x=5
- return inner
-
- f = outter(10)
- f()
此时会报错,f()会执行inner函数,inner函数在引用x时,会先在函数内检索x,如果x定义在引用后,则会报错,如果没有定义,会去上一级函数寻找x,所有上级都没有,会寻找全局变量
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。