小编key*_*569的帖子

列表理解中的Lambdas在调用时返回lambda

我试图在列表中迭代lambda func,因为test.py我想得到lambda的调用结果,而不是函数对象本身.但是,以下输出真的让我很困惑.

------test.py---------
#!/bin/env python
#coding: utf-8

a = [lambda: i for i in range(5)]
for i in a:
    print i()

--------output---------
<function <lambda> at 0x7f489e542e60>
<function <lambda> at 0x7f489e542ed8>
<function <lambda> at 0x7f489e542f50>
<function <lambda> at 0x7f489e54a050>
<function <lambda> at 0x7f489e54a0c8>
Run Code Online (Sandbox Code Playgroud)

我在打印调用结果时修改了变量名t,如下所示,一切顺利.我想知道这是怎么回事.?

--------test.py(update)--------
a = [lambda: i for i in range(5)]
for t in a:
    print t()

-----------output-------------
4
4
4
4
4
Run Code Online (Sandbox Code Playgroud)

python lambda

53
推荐指数
2
解决办法
3624
查看次数

标签 统计

lambda ×1

python ×1