我应该返回 None 还是 (None, None)?
我们有一个对象的方法,它会返回一个城市和州的组合,比如 ('Boston', 'MA')
。在某些情况下,可能没有有效的城市和州可以返回。那么在这种情况下,返回 None
更合适,还是返回一个包含 (None, None)
的两个元素的组合更好呢?
9 个回答
12
(None, None)
在Python中并不等于 False
。而且,创建一个元组比不创建元组要麻烦一些。所以我更倾向于使用 None
。
47
如果你在特殊情况下只返回一个值,就可能会导致元组解包的用法出问题。这样的话,你的一些调用者可能会写出:
city, state = getCityStateTuple("something")
在这种情况下,返回 None
会让 调用者 出现错误:
TypeError: 'NoneType' object is not iterable
所以,我个人建议在你的情况下返回 (None, None)
。不过,具体情况还得看你的调用者是怎么用的。
58
我会返回 None
。如果没有结果,那为什么还要返回一些看起来像结果的东西呢?
这样也更容易测试:
result = getCity()
if result:
# do something
只有在可能出现两个值中只有一个是 None
的情况下,我才会返回 (None, None)
(比如 ('Boston', None)
)。在这种情况下,这样做会更一致。