2016-11-06 44 views
-4

我的函数只是修改一个列表。但是,我不希望它返回甚至'None',但它返回'None'。有没有办法来解决这个问题?没有返回语句,但仍然返回无

+0

函数必须返回* something *,即使它只是一个隐含的'None'。我认为没有办法解决这个问题。 – Aurora0001

+3

默认情况下,没有返回语句的Python函数返回'None'。就是这样。你觉得它会返回什么?如果你不想返回任何东西,我建议你将它留在返回* Nothing中,如'None'中。这是做这件事的惯用方式。 – idjaw

+1

你的意思是什么“不归还任何东西”?这将如何工作? (例如,'x = foo()'会怎么做?) – melpomene

回答

1

TL; DR:不,在Python中默认返回None的方法并不有意义。

在Python中,返回隐含的None是最接近你可以做的“不返回任何东西”。这与例如C,其中void函数声明将阻止分配给变量。此行为是为了保持一致性Python语言的一部分,因为

x = MyFunc() 

必须定义和存储在x一定的价值。同样,使用诸如

OtherFunc(1, 2, MyFunc()) 

[ 1, 2, 3, MyFunc() ] 

MyFunc() * 3 

都需要有一定的行为。隐含的返回值为None,这些问题在Python中以特定方式解决。

它不是这个样子 - 在原则上,如果有人重新设计的Python的这部分可能有几个不同的自洽的方法 - 例如Python的可能有一些特殊的价值只能从函数调用返回,并且如果它被发现在任何其他可能引发错误的表达式中。值得注意的是,在某些情况下,如3 * MyFunc(),返回值为None以这种方式引发错误 - 但您不能立即根据函数定义立即在所有可能的不需要的场景中发生这种情况。

但是,Python返回隐含的None。改变它会影响依赖于全局行为的任何代码/库,或者给语言添加尴尬的上下文解析需求,因为该功能必须在函数定义内部以及这些函数被使用的地方工作。

相关问题