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