我一直以为Python 2.7函数是指它们被定义的范围。考虑以下代码。为什么第二个输出不是"calculating: sin"?
有没有办法修改代码使其按预期工作?
import math
mymath = dict()
for fun in ["sin", "cos"]:
def _impl(val):
print "calculating: %s" % fun
return getattr(math, fun)(val)
mymath[fun] = _impl
# calculating: cos
print mymath["cos"](math.pi)
# calculating: cos <- why?
print mymath["sin"](math.pi)