也许这是一个愚蠢的问题,但我正在努力解决它,我无法在互联网上找到明确的解释。
所以我想写一个带有函数的模块。我希望这个函数将另一个函数作为参数,对参数函数的输出做一些事情并返回它。
在代码中我想做的是:
from my_module import my_function
output = stuff.my_function() # stuff = what my_function accepts as argument
由于构建python方法有很多这样做我相信它是可能的,但我不知道如何。我尝试了几种方法但没有工作。
提前感谢您的帮助
答案 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())