0

问题在标题...

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

4

3 回答 3

11

这完全是不正确的。一方面,任何不需要返回值的函数都会返回None

除此之外,一般来说,保持你的输出一致会让事情变得更容易,但是做对函数有意义的事情。在某些情况下,返回None是合乎逻辑的。

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

不幸的是,编程往往充满了过度概括的建议。这很容易做到,但 Python 在这方面做得很好——实用性胜过纯粹性,这是 Python 禅宗的一部分。它本质上是用例dict.get()- 一般来说,如果找不到键,最好抛出异常,但在某些特定情况下,取回默认值更有用。

于 2013-04-27T12:56:04.627 回答
0
def abc():
 print 1
 return None
 print 2

是相同的

def abc():
 print 1
 return
 print 2

甚至

def abc():
 print 1

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

于 2013-04-27T12:58:39.397 回答
-1

这有点复杂。归结为这里的案例:

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

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

返回 None 通常是不好的形式,意思是“一切都很好”。

如果您有某种查找/访问器,None 表示“该项目的值为 None”,当它没有找到时,您应该抛出适当的异常。

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

于 2013-06-11T19:48:54.690 回答