【问题标题】:Having trouble figuring out what this code does无法弄清楚这段代码的作用
【发布时间】:2019-07-04 21:35:06
【问题描述】:

我是 Python 新手,所以可能有一些很好的理由,但看起来它什么也没做:

def preprocess(t):
    return t

在我看来,它是一种旧的浪费时间的功能来减慢速度。

我看到“预处理”出现在下游的几个位置,所以如果它调用“预处理”并传递给“t”,然后返回“t”,我不知道它为什么来回传递它。

【问题讨论】:

  • 这可能意味着对于需要回调但不需要实际预处理的东西的无操作。
  • 也许它是一个占位符。如果有人想“预处理”参数,他们可以更改函数,并且它的效果会在它被调用的任何地方发生。

标签: python function


【解决方案1】:

不,这段代码没有任何用处。

它很可能被用作占位符实现,以便调用此函数的代码可以运行;即使preprocess 尚未实现。

替代方法是注释掉或以其他方式删除对preprocess 的调用,直到它被实施,但如果在多个地方使用它可能会很尴尬。

【讨论】:

  • @BitTwiddler 我会注意,我同意 Chepner 的观点,identity 函数很有用;我经常使用它们。不过,从名称上看,我不相信那是这段代码的意图。这就是为什么我说它没有什么用处
【解决方案2】:

identity 函数在需要某些函数的地方作为空操作很有用。例如,您可以从函数中消除条件,如

def do_something(value, f=None):
    if f is not None:
        value = f(value)
    # some some more stuff with value

通过写作

def do_something(value, f=preprocess):
    value = f(value)
    # do some more stuff with value

【讨论】:

    【解决方案3】:

    这可能是基类中的默认无操作实现,预计将被扩展并在子类中更新行为。需要更多关于函数的上下文来判断是否是这种情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多