python中闭包中变量的影响因素

时间:2021-10-24 22:43:28
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());
print(f2());
print(f3());

def count2():
fs = []
for i in range(1,4):
def f():
j=i
def g():
return j*j
return g
fs.append(f())
return fs

f2 = count2()
print(f2[0]());
print(f2[1]());
print(f2[2]());

def count3():
fs = []
for i in range(1,4):
def f():
j=i
# 由于i的值后面成为3 所以还是9,函数内没有计算
return j*j
fs.append(f)
return fs

f3 = count3()
print(f3[0]());
print(f3[1]());
print(f3[2]());

python中闭包中变量的影响因素

  不难发现,当传出闭包时,闭包不内不进行计算,闭包内变量值绑定主函数中的变量,若想闭包中的变量值不同,需要在闭包前将变量值转移到一个中间函数的变量中(参数或中间函数内为中间变量赋值)