python - python:关于 lambda 和闭包
问题描述
我明白那个:
a=[lambda :k for k in [1,2,3]]
[e() for e in a]
返回[3, 3, 3]
,因为它k
在运行时采用 的值,而 的最后一个值k
是3
。但是,我不明白为什么,如果我这样做:
k=50
[e() for e in a]
我还是明白了[3, 3, 3]
。为什么这个?我更新了k
with的值50
,为什么e()
函数仍然读取旧k
值?
解决方案
推荐阅读
- ios - 如何让带有按钮的 UIViewController 每次加载时都可以工作,而不是每次加载时都可以工作
- python - 使用 Scapy 从 pcap 获取 HTTP 响应代码
- java - 我们可以在日志消息中添加服务器名称吗?
- java - Java运行自定义groovy代码,如何保证groovy安全?
- android - 如何在 android manifest 中按顺序设置启动画面和其他活动?
- c++ - 在 Windows 中禁用便携式设备
- blockchain - 错误 3080006:EOSIO 区块链中的交易时间过长
- c# - 为什么 C# 中的局部变量必须在初始化后初始化并在 If 运算符条件中强制转换?
- symfony4 - php -S 127.0.0.1:8000 -t public 不起作用
- javascript - 如何在网站中实现 Postman 任务