作者poototo (poototo)
看板Python
标题Re: [问题] lambda 在回圈内设定的问题
时间Mon Mar 28 23:11:16 2022
# 可用闭包让子函数记住i
LL = [(lambda i: lambda:print(i))(i) for i in range(3)]
for L in LL:
L()
※ 引述《pshuang (中山先生忠实信徒-我爱萝)》之铭言:
: Os环境:Win7
: Py版本: 3.8.10
: lambda关键字,如果在回圈内设定,又没带参数,
: 感觉结果想不通。想请问原因。
: code如下:
: #--------------------无参数-----------------------
: l_l = [ lambda: print(i) for i in range(3) ]
: for l in l_l: l()
: 输出结果:
: 2
: 2
: 2
: #--------------------带参数---------------------
: l_l2 = [ lambda x = i: print(x) for i in range(3) ]
: for l in l_l2: l()
: 输出结果:
: 0
: 1
: 2
: 请问,没带参数的场合,每次回圈还是把当下的 i 传给 print 不是吗?
: 为甚麽输出结果却都是回圈的最後一个值呢?
: 这是lambda的某种特性吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.177.89.24 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1648480279.A.5AC.html