返回函数调用?

时间:2016-04-23 01:25:45

标签: 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")

两者都有效,但是有更多的pythonic方式来写这样的东西吗?

2 个答案:

答案 0 :(得分:3)

"更多pythonic"从绝对意义上说,因为你会在不同的情况下使用它们。

如果您要在其他地方生成回调,关闭某些输入(以后要填写其他输入),或者类似的高级用例,则返回稍后要调用的函数是合适的。 / p>

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

答案 1 :(得分:0)

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