我有这样一种方法:
def _play(self):
carda = self._carda
cardb = self._cardb
if carda.is_trump and cardb.is_trump:
winner = self._winbyrank()
return winner
if not carda.is_trump and not cardb.is_trump:
if carda.suite == cardb.suite:
winner = self._winbyrank()
return winner
else:
winner = self._winbyfirst()
return winner
if carda.is_trump and not cardb.is_trump:
winner = self._winbytrump()
return winner
elif not carda.is_trump and cardb.is_trump:
winner = self._winbytrump()
return winner
这是偶尔返回None
。当我把它换成下面的它解决了这个问题。在
这不是Python解释器中的一个bug吗?方法return
不应该返回winner
值并退出方法,而不是继续移动到结尾并返回None
?我使用的是python2.7.3
“Python的一个常用部分是否存在bug,比如从函数返回值?”几乎肯定会是“不”
如果不满足
if
条件,则第一个函数有一个可以到达结尾的路径,从而避免显式的return
。发生这种情况时,默认情况下返回None
。在第二个版本中,通过使用无条件的return
语句结束函数,可以避免这个问题。这是我推荐的做法。在除了Ignacio Vazquez Abrams的评论之外,没有其他的块也被认为是不好的做法。在
所以如果你有这样的东西:
确保您还有其他:
^{pr2}$你把缩进弄错了,把标签和空格混在一起。使用
python -tt
进行验证。在整个过程中坚持elif,除非你有理由证明不止一个if语句是正确的。在相关问题 更多 >
编程相关推荐