如何在Python中使用函数名作为参数? 例如:
def do_something_with(func_name, arg):
return func_name(arg)
其中'func_name'可能是'mean','std','sort'等。
例如:
import numpy as np
func_list = ['mean', 'std']
for func in func_list:
x = np.random.random(10)
print do_something_with(func, x)
当然结果应该在我的数组'x'上成功应用'mean'和'std'。
答案 0 :(得分:6)
作为评论中的建议,将列表中的函数对象传递给函数并调用它们。这不仅适用于numpy
,而且适用于所有Python函数:
import numpy as np
func_list = [np.mean, np.std]
for func in func_list:
x = np.random.random(10)
print func(x)
确保函数调用以相同的方式工作,即x
作为第一个参数。
以上与函数重命名的工作方式非常类似:
import time
another_sleep = time.sleep
another_sleep(1) # Sleep for one second
您创建一个函数对象(time.sleep
)并将其分配给变量(another_sleep
)。现在,您可以使用变量的名称(another_sleep(1)
)来调用它。
答案 1 :(得分:4)
Tadhg McDonald-Jensen的解决方案是正确的,因为函数是Python中的一等公民。另外,我有另一个想法:
from operator import methodcaller
import numpy as np
func_list = ['mean', 'std']
for func in func_list:
x = np.random.random(10)
f = methodcaller(func, x)
result = f(np)
print(result)
在某些情况下,您可以使用operator.methodcaller
。