面试题_lambda函数调用

res多少?

def func():
    return [lambda x: i * x for i in range(4)]


res = [m(2) for m in func()]

# print(res)
# 6 6 6 

# 转化版本
def func():
    li = []
    for i in range(4):
        # 此处为函数的定义处
        def lam(x):
            # 等到lam函数调用时
            # 会向外界寻找局部变量i
            # 此时i已经被for循环完毕, i==3,
            # 与内函数发生绑定关系
            # 所以这四个函数调用的i都是3
            return x * i

        li.append(lam)
    # li列表内是四个lam函数
    return li


# 此处是函数的调用处
res = [m(2) for m in func()]
print(res)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容