函数作为返回值

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())


#等到i = 3 了,才return fs统一返回f函数的3个对象赋值给 f1,f2,f3,此时f1 f2 f3 调用的时候i 都等于3了, print(f1()) 的时候 只执行了 return i*i
#所以f1(),f2(),f3()值都是9




def count():
def f(j):
def g():
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())

#带入了参数i,i的值被记录下来了,f1对应的是fs.append(f(1)),f2对应的是fs.append(f(2)),f3对应的是fs.append(f(3))
#所以f1(),f2(),f3()值分别是1,4,9

---------------------------------------------
result = [lambda x: x + i for i in range(10)]
print(result[0](10))  #打印19
print(result[9](10))  #打印19

与下面的函数一样

def count():
fs = []
for i in range(0, 10):      #变量i等到count()函数执行完了才会释放,f(x)函数属于count()函数内的,所以要等f(x)函数执行完,整个count()函数执行完,变量i才能释放;所以f(x)函数能调用到变量i;
def f(x):
       # print (i)    #f调用的时候都是9
return i+x
fs.append(f)    #f调用i的时候,f在内存中找i,i在内存地址中为9;
return fs

# f1, f2, f3,f4,f5,f6,f7,f8,f9,f10 = count()
a = count()
print(a) #存放f函数地址的列表
print(a[0](10))  #打印19
print(a[9](10))  #打印19
---------------------------------------------
for i in range(0, 10):
def f():
return i+1
print(i) #打印9

参考:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431835236741e42daf5af6514f1a8917b8aaadff31bf000

https://www.cnblogs.com/JohnABC/p/4076855.html

转载于:https://www.cnblogs.com/lighthouse/p/9367113.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值