Python 返回函数调用?

Python 返回函数调用?,python,python-2.7,Python,Python 2.7,这是: def outer(x): def inner(): print x return inner >>> outer("foo")() 与此相同: def outer(x): def inner(): print x return inner() >>> outer("foo") 这两种方法都有效,但是有没有一种更具python风格的方法来写这样的东西呢?从绝对意义上讲,这两种方法都

这是:

def outer(x):
    def inner():
        print x
    return inner

>>> outer("foo")()
与此相同:

def outer(x):
    def inner():
        print x
    return inner()

>>> outer("foo")
这两种方法都有效,但是有没有一种更具python风格的方法来写这样的东西呢?

从绝对意义上讲,这两种方法都不是“更具python风格”,因为你会在不同的情况下使用它们

如果您正在生成要连接到其他地方的回调,关闭某些输入(其他输入稍后填写),或者对于类似的高级用例,则返回稍后调用的函数是合适的

如果您的调用者只对某个值或操作感兴趣,并且您没有任何特定的理由将操作分为多个阶段,则返回值或立即执行副作用操作是合适的。

从绝对意义上讲,这两种操作都不是“更具pythonic”的,因为您将在不同的情况下使用它们

如果您正在生成要连接到其他地方的回调,关闭某些输入(其他输入稍后填写),或者对于类似的高级用例,则返回稍后调用的函数是合适的


如果您的调用者只对某个值或操作感兴趣,并且您没有任何特殊理由将操作分为几个阶段,则返回值或立即执行副作用操作是合适的。

它们是不同的。在您的示例中,第一个将返回一个函数,您可以稍后使用,第二个将返回None类型,因为您不返回任何内容,只打印x。

它们是不同的。在您的示例中,第一个将返回一个函数,您可以稍后使用,第二个将返回None类型,因为您不返回任何内容,只打印x。

它们执行不同的操作。第一个返回函数,第二个返回
None
。函数返回函数是具有一阶函数的语言中的一种常见技术。一个函数在另一个函数中严格地帮助外部函数(内部函数)也是很常见的——通常是为了防止名称空间膨胀或澄清程序功能/意图。@wim,我的评论不值得给出真正的答案,但我感谢您的关注……它们做不同的事情。第一个返回函数,第二个返回
None
。函数返回函数是具有一阶函数的语言中的一种常见技术。一个函数在另一个函数中严格地帮助外部函数(内部函数)也是很常见的——通常是为了防止名称空间膨胀或澄清程序功能/意图。@wim,我的评论几乎不值得给出真正的答案,但我感谢您的关注。。。