使用Python 2.7,我如何定义一个名称有变量的函数?像:
for x in xrange(40):
def functionname + x():
print x
答案 0 :(得分:7)
将对函数的引用存储在列表或字典中。
为此,让我们创建一个函数,使我们将存储在我们列表中的函数:
def functionmaker(x):
def function():
print(x)
return function
这允许我们在创建函数时捕获值x
。
现在让我们列出一下这些功能:
functionlist = [functionmaker(x) for x in xrange(40)]
现在我们可以打电话给他们:
functionlist[5]() # prints 5
答案 1 :(得分:4)
这是疯狂。
为什么不这样做:
def functionname(x):
if x > 40:
raise ValueError
然后随便处理每个案件。
答案 2 :(得分:1)
比依赖exec()稍微多一点Pythonic的方法是使用locals()dict。
from __future__ import print_function
for x in range(40):
funcname = "functionname" + str(x)
function = lambda x=x: print(x)
locals()[funcname] = function
这些专栏由训练有素的专业人士撰写。不要在家里试试......或者这样做,这只是糟糕的编程习惯。
两个注释:
print_function
导入可以在lambda
s lambda x=x:
是one of Python's gotchas的解决方法。答案 3 :(得分:-5)