这是:
def outer(x): def inner(): print x return inner >>> outer("foo")()
与此相同:
def outer(x): def inner(): print x return inner() >>> outer("foo")
两者都有效,但有更多的pythonic方式来写这样的东西吗?
从绝对意义上讲,它们都不是“更加pythonic”,因为你会在不同的情况下使用它们 .
如果您要生成一个要在其他地方连接的回调,关闭某些输入(以后要填写其他输入),或者类似的高级用例,则返回稍后要调用的函数是合适的 .
如果您的呼叫者只对该值或操作感兴趣,并且您没有任何特殊原因将操作分成多个阶段,则返回值或立即执行副作用操作是合适的 .
它们是不同的 . 在你的例子中,第一个将返回一个函数,你可以在以后使用,第二个将返回None类型,因为你什么也没有返回,只是打印x .
2 回答
从绝对意义上讲,它们都不是“更加pythonic”,因为你会在不同的情况下使用它们 .
如果您要生成一个要在其他地方连接的回调,关闭某些输入(以后要填写其他输入),或者类似的高级用例,则返回稍后要调用的函数是合适的 .
如果您的呼叫者只对该值或操作感兴趣,并且您没有任何特殊原因将操作分成多个阶段,则返回值或立即执行副作用操作是合适的 .
它们是不同的 . 在你的例子中,第一个将返回一个函数,你可以在以后使用,第二个将返回None类型,因为你什么也没有返回,只是打印x .