有趣的python【动态更新】

内容目录

有趣的python,emm或者说叫蛋疼的python吧

  1. 思考代码输出以及原因
def multiply():
    return [lambda x: i * x for i in range(4)]

print([m(100) for m in multiply()])
[300, 300, 300, 300]
def multiply():
    return [lambda x, i = i : i * x for i in range(4)]

print([m(100) for m in multiply()])
[0, 100, 200, 300]
[lambda x: i * x for i in range(4)]
[.(x)>,
 .(x)>,
 .(x)>,
 .(x)>]
[lambda x, i = i : i * x for i in range(4)]
[.(x, i=0)>,
 .(x, i=1)>,
 .(x, i=2)>,
 .(x, i=3)>]
result = []
for i in range(4):
    def func(x, i=i):  # 将当前的 i 值绑定到默认参数
        return i * x
    result.append(func)

print([f(100) for f in result])
[0, 100, 200, 300]

发表回复