闭包
python中的闭包从表现形式上定义(解释)为:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure).
返回闭包时牢记一点:返回函数不要引用任何循环变量,或者后续会发生变化的变量。
闭包示例:
# 示例1
def create_pointer(my_string):
def pointer(n):
return my_string[n]
return pointer
pointer = create_pointer('my name is Molly')
pointer(5)
# 示例2
def count():
fs = []
for i in range(1, 4):
def f():
# print(id(i))
return i*i
fs.append(f)
return fs
f1, f2, f3 = count()
print(f1())
print(f2())
print(f3())
# 返回闭包时牢记一点:返回函数不要引用任何循环变量,或者后续会发生变化的变量。
def count():
def f(j):
def g():
# print(id(j))
return j*j
return g
fs = []
for i in range(1, 4):
fs.append(f(i)) # f(i)立刻被执行,因此i的当前值被传入f()
return fs
f1, f2, f3 = count()
print(f1())
print(f2())
print(f3())