如何在Python中定义一个名称包含变量的函数?

时间:2014-07-30 18:33:21

标签: python function

使用Python 2.7,我如何定义一个名称有变量的函数?像:

for x in xrange(40):
  def functionname + x():
    print x

4 个答案:

答案 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

这些专栏由训练有素的专业人士撰写。不要在家里试试......或者这样做,这只是糟糕的编程习惯。

两个注释:

答案 3 :(得分:-5)

编辑:因为编程风格不好而删除了这个。更好的看看kindalls答案。遗憾。