【发布时间】:2014-05-20 07:32:43
【问题描述】:
以下在Python中有什么实际用途吗?
>>> def a(n):
print(n)
return a
甚至:
>>> def a(n):
print(n)
return b
>>> def b(n):
print(n+3)
return a
【问题讨论】:
-
你可以像
a(3)(4)(5)一样调用a,会打印出3 4 5 -
我认为这没什么用。无论调用什么函数,都必须已经引用了它。也许是为了稍微缩短代码,但这将是一种非常不寻常的 Python 编写方式。
-
@TimPietzcker 不,it 不会
print类似的东西,但是如果您在交互式解释器中执行此操作,解释器将尝试打印调用,它恰好由这样的字符串表示。我想你知道这种区别,但太多人不知道,所以如果你不希望这种误解进一步蔓延,请谨慎选择你的措辞...... -
@l4mpi 如果他能够链接调用,则返回的对象是一个函数,除非他使用实现
__call__的自定义对象。所以,当你在 REPL 中打印/评估它时,我相信它会像 Tim 所示的那样打印。 -
@thefourtheye 你没明白我的意思。当然 REPL 会这样打印它,但是太多人没有意识到这种区别,并认为 python 本身打印返回值。我的观点是,Tims 注释仅在您在交互式解释器中执行代码时才有效,并且描述了交互式解释器的行为,而不是作为一种语言的 python。