Python 板


LINE

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), 来自: 111.243.121.200 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1648437735.A.C3E.html
1F:推 DaOppaiLoli: 这应该是 Scope 的关系 03/28 12:54
2F:→ DaOppaiLoli: https://www.ideone.com/txytbg 03/28 12:54
3F:→ DaOppaiLoli: 就算写成一般 Function 也会有一样的情况,i 对 lam 03/28 12:56
4F:→ DaOppaiLoli: bda 来说是 Global 但 x 对 lambda 来说是 Local 03/28 12:56
原来如此,感谢。
5F:→ ck574b027: python是用reference(简称位置)在运作的,你说的「 03/28 23:37
6F:→ ck574b027: 当下的i」只是i的位置。又因python改变位置需要透过as 03/28 23:37
7F:→ ck574b027: signment,而i在for并没有发生这种事,只是在他的位 03/28 23:37
8F:→ ck574b027: 置更新,所以全部lambda都拿着同个i。你可以不要用lis 03/28 23:37
9F:→ ck574b027: t comprehension,把第一个例子的[]改成(),结果就会 03/28 23:37
10F:→ ck574b027: 跟第二个一样,因为generator等於在for才建立lambda 03/28 23:37
11F:推 poototo: generator也是闭包把local的i让lambda记住才yield出去 03/29 00:19
12F:推 poototo: []的例子类似js回圈的var会共用污染 03/29 01:05
13F:→ poototo: 也就是ck大所说的,都去同一addr取值 03/29 01:06
是的,看了Da大给的范例想通了。 透过把变数指向的位址印出来证实。 https://www.ideone.com/T4bUMs python在改动变数(reference)指向的值时, 会产生一个新物件,并把新物件的位址更新到原变数。 ※ 编辑: pshuang (111.243.112.208 台湾), 03/29/2022 09:01:34







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP