【问题标题】:Most pythonic way to write high order function编写高阶函数的最pythonic方式
【发布时间】:2014-12-08 20:28:41
【问题描述】:

这应该是一个非常基本的问题,但我想知道处理高阶函数的最 Pythonic 方式是什么。我已经定义了fg

def f(x):
    return x**2

def g(x):
    return x**3

def gen_func(f,g):
    def func(x):
        return f(x)+g(x)
    return func

wanted_func = gen_func(f, g)

或:

import functools

def gen_func(f,g,x):
    return f(x)+g(x)

wanted_func = functools.partial(gen_func, f, g)

我可能会错过这两个写作不同之处?

【问题讨论】:

  • 您的意思是在gen_func 中有return func
  • 是的,这是一个错字:已编辑!
  • 对于你所拥有的,第一种方法已经很清晰并且是 Python 的

标签: python functools


【解决方案1】:

好吧,假设您没有在其他地方使用gen_func,您可以将其删除以支持以下单行:

wanted_func = functools.partial(lambda f, g, x: f(x) + g(x), f, g)

...但这不是那么可读,部分函数应用程序实际上是多余的。还不如写:

wanted_func = lambda x: f(x) + g(x)

但是,至于您的示例,它们之间没有区别(据我所知),所以这完全取决于您。我会避开“pythonic”教条,只使用您认为最易读和最适合您的特定用例的任何内容,而不是 Python 社区认为正确的内容。

请记住,Python 是一种语言,就像口语一样,关于如何使用它们的规定性规则往往会限制表达能力。我喜欢将其与Newspeak 进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 2011-03-09
    • 2013-01-13
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多