我试图使用globals()
数组在循环中动态创建模块级函数,但看起来我创建的所有函数都指向循环中定义的最后一个函数。
请考虑以下示例。
import sys
arr = ["Magic1", "Magic2"]
for magic in arr:
print magic
globals()[magic.upper()] = lambda x: sys.stdout.write(x + magic + '\n')
MAGIC1("foo")
MAGIC2("foo")
实际输出:
Magic1
Magic2
fooMagic2
fooMagic2
期望的输出:
Magic1
Magic2
fooMagic1
fooMagic2
我做错了什么,如何让循环中的先前函数定义坚持下去?