【问题标题】:Unwrapping function calls in python在python中展开函数调用
【发布时间】:2020-08-01 20:44:01
【问题描述】:

我无法理解和重写(因此更清楚)文件 trading_bot_cf.py第 120 - 123 行 上发生了什么,该文件位于:@987654321 @

        df['momentum'] = df.groupby('symbol')['close'].rolling(
            momentum_window,
            min_periods=minimum_momentum
            ).apply(momentum_score).reset_index(level=0, drop=True)

这些函数的调用顺序是什么?如何将这些行重写为单独的顺序函数调用?我不明白函数调用是如何相互关联的。非常感谢任何帮助。

【问题讨论】:

  • 这些是链式函数调用,其中一个函数返回一个对象(或self),该对象具有可以调用的函数等等。所以原则上你可以创建类似的代码:b = a(); c = b(); d = c() 而不是d = a().b().c()
  • 感谢您的回复!我意识到它们是链接的函数调用,我想解开它们,但我不知道如何。我一直在尝试的一切都导致了某种错误。你能告诉我如何解开这些函数调用吗?
  • 也许您的问题应该包含其中一种尝试以及完整的错误回溯。

标签: python python-3.x dataframe algorithmic-trading


【解决方案1】:

我对@9​​87654321@一无所知,但是既然是python,那么这一行:

df['momentum'] = df.groupby('symbol')['close'].rolling(momentum_window, min_periods=minimum_momentum).apply(momentum_score).reset_index(level=0, drop=True)

应该可以通过在每个函数返回时创建引用来拆分成多行:

groupby = df.groupby('symbol')['close']
rolling = groupby.rolling(momentum_window, min_periods=minimum_momentum)
apply = rolling.apply(momentum_score)
df['momentum'] = apply.reset_index(level=0, drop=True)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-13
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 2017-11-23
    • 1970-01-01
    • 2013-06-27
    相关资源
    最近更新 更多