在 Python 中执行函数链
Posted
技术标签:
【中文标题】在 Python 中执行函数链【英文标题】:Execute chain of functions in Python 【发布时间】:2021-09-29 10:55:59 【问题描述】:我正在使用 Python 和 Pandas 进行数据预处理。为此,我写了几个清理数据的函数,应该一个接一个地依次执行。
我不想每次打开 Jupyter 时都手动执行所有功能。所以我正在寻找类似于触发器的东西,我将在其中包含所有函数名称并通过初始化它,所有函数都将被执行。
一种方法是定义一个 Python 函数,该函数将在 body 中调用其他函数;但不确定效率如何。
我寻找了 sklearn.Pipeline()
和 pandas.pipe()
函数,但这些函数似乎都不适合我。
有什么建议吗?
【问题讨论】:
“一种方法是定义一个 Python 函数,该函数将在主体内调用其他函数;但不确定效率如何。”是的,这就是要走的路 【参考方案1】:这可以通过将函数的引用存储在列表中来完成,但创建一个调用所有这些函数的新函数更有意义。
def fun1():
print("function 1")
def fun2():
print("function 2")
functions = [fun1,fun2]
for function in functions:
function()
或
def fun1():
print("function 1")
def fun2():
print("function 2")
def begin():
func1()
func2()
# any other function
begin()
如果你想要更高级的东西,你可以使用设计模式责任链reading material
【讨论】:
【参考方案2】:编写一个驱动函数 - 我们称之为start()
并在这个函数中一个接一个地调用你所有的数据清理函数。
def start():
data_cleaning_1()
data_cleaning_2()
data_cleaning_3()
.
.
调用start()
函数。
【讨论】:
以上是关于在 Python 中执行函数链的主要内容,如果未能解决你的问题,请参考以下文章
《python解释器源码剖析》第12章--python虚拟机中的函数机制