Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中迭代函数_Python_Function_Iteration - Fatal编程技术网

在Python中迭代函数

在Python中迭代函数,python,function,iteration,Python,Function,Iteration,我希望能够在Python 2.7中执行以下操作: for function in ['function1', 'function2', 'function3', 'function4']: some_dictionary [function] = function (an_argument) 然而,当我尝试这样做时,一个错误出现了。下面的代码执行我希望上面的代码执行的操作: some_dictionary ['function1'] = function1 (a

我希望能够在Python 2.7中执行以下操作:

    for function in ['function1', 'function2', 'function3', 'function4']:
        some_dictionary [function] = function (an_argument)
然而,当我尝试这样做时,一个错误出现了。下面的代码执行我希望上面的代码执行的操作:

    some_dictionary ['function1'] = function1 (an_argument)
    some_dictionary ['function2'] = function2 (an_argument)
    some_dictionary ['function3'] = function3 (an_argument)
    some_dictionary ['function4'] = function4 (an_argument)
有没有一种更简洁的方法来编写后一种代码,类似于前一种

提前感谢,

逻辑学

for function in ['function1', 'function2', 'function3', 'function4']:
    some_dictionary[function] = function(an_argument)
这将不起作用,因为列表中的项是字符串,您不能调用字符串。相反,将实际函数放在列表中

for function in [function1, function2, function3, function4]:
    some_dictionary[function.__name__] = function(an_argument)
您还可以将函数本身用作键,这在某些情况下很有用(例如,您可以将函数的描述放在其docstring中,并使用它为用户打印好的内容,或者允许用户重试函数,或者其他任何操作):保留函数引用以备以后使用更简单,换句话说,不是试图从函数名中获取它

for function in [function1, function2, function3, function4]:
    some_dictionary[function] = function(an_argument)
这将不起作用,因为列表中的项是字符串,您不能调用字符串。相反,将实际函数放在列表中

for function in [function1, function2, function3, function4]:
    some_dictionary[function.__name__] = function(an_argument)
您还可以将函数本身用作键,这在某些情况下很有用(例如,您可以将函数的描述放在其docstring中,并使用它为用户打印好的内容,或者允许用户重试函数,或者其他任何操作):保留函数引用以备以后使用更简单,换句话说,不是试图从函数名中获取它

for function in [function1, function2, function3, function4]:
    some_dictionary[function] = function(an_argument)

您可以使用
func\u name

>>> a = lambda x: x + 1
>>> b = lambda y: y + 2
>>> c = lambda z: z + 3
>>> a.func_name = 'a'
>>> b.func_name = 'b'
>>> c.func_name = 'c'
>>> z = a, b, c
>>> d = {}
>>> for f in z:
...     d[f.func_name] = f(10)
...
...
>>> d
{'a': 11, 'c': 13, 'b': 12}

在这里使用lambdas,因此所有内容都是name
,但是如果使用适当的函数,它们的
函数名将反映它们的变量名。

您可以使用
函数名

>>> a = lambda x: x + 1
>>> b = lambda y: y + 2
>>> c = lambda z: z + 3
>>> a.func_name = 'a'
>>> b.func_name = 'b'
>>> c.func_name = 'c'
>>> z = a, b, c
>>> d = {}
>>> for f in z:
...     d[f.func_name] = f(10)
...
...
>>> d
{'a': 11, 'c': 13, 'b': 12}

在这里使用lambda,因此所有内容都是name
,但是如果使用适当的函数,它们的
函数名将反映它们的变量名。

如果函数名为字符串,则可以使用
locals()
访问它们:

def function1():
    print "in function1"

def function2():
    print 'in function2'

some_dictionary = {}

for func in ['function1', 'function2']:
    some_dictionary[func] = locals()[func]

print some_dictionary['function1']()
打印:

in function1

如果函数名为字符串,则可以使用
locals()
访问它们:

def function1():
    print "in function1"

def function2():
    print 'in function2'

some_dictionary = {}

for func in ['function1', 'function2']:
    some_dictionary[func] = locals()[func]

print some_dictionary['function1']()
打印:

in function1

功能1、功能2、功能3、功能4在哪里定义?在您要导入的某个特定文件中?尽管如此,还是相关的:在这个特定的例子中,在调用这些函数之前,我自己定义了这些函数。所有函数都接受一个相同类型的参数,这里称为“参数”。在哪里定义了
function1、function2、function3、function4
?在您要导入的某个特定文件中?尽管如此,还是相关的:在这个特定的例子中,在调用这些函数之前,我自己定义了这些函数。所有函数都接受一个相同类型的参数,这里称为“an_参数”。