正在回归'没有'对于Python函数来说,一个好主意?

时间:2013-04-27 12:54:19

标签: python

问题出在标题中......

我正在学习Python的过程中,我听过几次函数返回None是你在真正的程序中永远不应该有的东西(除非你的函数永远不会返回任何东西)。虽然我似乎无法找到绝对必要的情况,但我想知道它是否可以成为一个很好的编程实践。即,如果函数返回整数(例如,等式的解),则无表示没有回复的答案。或者它应该始终作为函数内的异常处理?也许还有其他一些实际有用的例子?或者我从不这样做?

3 个答案:

答案 0 :(得分:10)

这种暴跌是不正确的。例如,任何不需要返回值的函数都将返回None

除此之外,通常,保持输出的一致性会使事情变得更容易,但要对功能有意义。在某些情况下,返回None是合乎逻辑的。

如果出现问题,是的,你应该抛出异常,而不是返回None

不幸的是,编程往往充满了过于笼统的建议。这很容易做到,但Python非常好用 - 实用性胜过纯粹是Python的禅宗的一部分。它基本上是dict.get()的用例 - 通常,如果找不到密钥,最好抛出异常,但在某些特定情况下,获取默认值会更有用。

答案 1 :(得分:0)

def abc():
 print 1
 return None
 print 2

相同
def abc():
 print 1
 return
 print 2

甚至

def abc():
 print 1

所有不返回内容的函数都返回None。返回None的一个非常重要的用例是当你想说“终止这个函数”而不必嵌套一堆ifs时。

答案 2 :(得分:0)

这有点复杂。 这取决于案例:

仅仅改变其对象状态的函数不返回任何内容(返回None)。例如,给定一个名为L:L.sort()的列表; L.append( “乔”)

其他函数创建一个新对象或一个对象的新副本,并在不改变原始列表的情况下返回它。考虑:排序(L); y = L + [1,2,3]

返回通常不好的形式无意味着“一切都很好。”

如果您有某种查找/访问器,则“无”表示“该项的值为”,如果未找到,则应抛出相应的异常。

在大多数其他情况下,返回None有点令人困惑。