如何在循环中正确设置动态定义的全局函数?

时间:2018-05-08 18:42:07

标签: python lambda

我试图使用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

我做错了什么,如何让循环中的先前函数定义坚持下去?

0 个答案:

没有答案