如何在函数

时间:2016-10-20 13:34:10

标签: python python-2.7

也许这是一个愚蠢的问题,但我正在努力解决它,我无法在互联网上找到明确的解释。

所以我想写一个带有函数的模块。我希望这个函数将另一个函数作为参数,对参数函数的输出做一些事情并返回它。

在代码中我想做的是:

from my_module import my_function  

output = stuff.my_function()  # stuff = what my_function accepts as   argument

由于构建python方法有很多这样做我相信它是可能的,但我不知道如何。我尝试了几种方法但没有工作。

提前感谢您的帮助

3 个答案:

答案 0 :(得分:4)

函数是python中的一等公民,所以你在没有()的情况下按名称传递函数,然后你可以使用()来调用该函数,例如:

from my_module import my_function  

def a_function(x):
    y = x()
    return y

output = a_function(my_function)

答案 1 :(得分:0)

您要做的是将a_function作为参数传递给my_function并获得修改后的功能。

这是一个简单的例子:

In [1]: def add_one(f):
   ...:     def f_plus_1(*args, **kwargs):
   ...:         return f(*args, **kwargs) + 1
   ...:     return f_plus_1
   ...: 

In [2]: def multiply(a, b):
   ...:     return a * b
   ...: 

In [3]: multiply_and_add_one = add_one(multiply)

In [4]: multiply(5, 3)
Out[4]: 15

In [5]: multiply_and_add_one(5, 3)
Out[5]: 16

在这里,我们使用*args**kwargs来传递我们获取原始函数的任何参数。

答案 2 :(得分:0)

文件my_module.py

def my_function():
    return something

file current.py

from my_module import my_function

def a_function(x):
    does something 
    return y

output = a_function(my_function())