lambda匿名函数

如下示例:

li = [lambda :x for x in range(10)]
print(type(li))
for i in li:
    print( i,i())

结果如下:

<class 'list'>
<function <listcomp>.<lambda> at 0x000000000117A840> 9
<function <listcomp>.<lambda> at 0x000000000117A8C8> 9
<function <listcomp>.<lambda> at 0x000000000117A950> 9
<function <listcomp>.<lambda> at 0x000000000117A9D8> 9
<function <listcomp>.<lambda> at 0x000000000117AA60> 9
<function <listcomp>.<lambda> at 0x000000000117AAE8> 9
<function <listcomp>.<lambda> at 0x000000000117AB70> 9
<function <listcomp>.<lambda> at 0x000000000117ABF8> 9
<function <listcomp>.<lambda> at 0x000000000117AC80> 9
<function <listcomp>.<lambda> at 0x000000000117AD08> 9

li的类型是一个列表,里面的每一个元素都是一个函数,想象中li中函数的返回值应依次是0-9,因为以上代码等价如下:

li = []
for x in range(10):
    def func():
        return x
    # print(func,func())
    li.append(func)

for i in li:
    print(i,i())

但是li中每个元素的返回值都是9,不理解!暂hold!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容