繁体   English   中英

如何将函数名称列表作为参数传递?

[英]How to pass a list of function names as a parameter?

如何在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'。

作为评论中的建议,将列表中的函数对象传递给函数并调用它们。 这不仅适用于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) )来调用它。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM