在 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中的函数链

js函数作用域作用域链闭包立即执行函数

Azure Insights:通过函数执行链跟踪自定义属性

《python解释器源码剖析》第12章--python虚拟机中的函数机制

为啥这个异步函数在它之前定义的等效 Promise.then 链之前执行?

执行环境,作用域,作用域链详解