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

来源:互联网 发布:c语言函数求最小公倍数 编辑:程序博客网 时间:2024/06/07 07:20
def count():fs = []for i in range(1,4):def f():return i*ifs.append(f)return fsf1, f2,f3 = count()print(f1());print(f2());print(f3());def count2():fs = []for i in range(1,4):def f():j=idef g():return j*jreturn gfs.append(f())return fsf2 = 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*jfs.append(f)return fsf3 = count3()print(f3[0]());print(f3[1]());print(f3[2]());

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

原创粉丝点击