Python方法返回。翻译错误?

2024-09-30 16:36:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一种方法:

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。当我把它换成下面的它解决了这个问题。在

^{pr2}$

这不是Python解释器中的一个bug吗?方法return不应该返回winner值并退出方法,而不是继续移动到结尾并返回None?我使用的是python2.7.3


Tags: and方法selfnonereturnifisnot
3条回答

“Python的一个常用部分是否存在bug,比如从函数返回值?”几乎肯定会是“不”

如果不满足if条件,则第一个函数有一个可以到达结尾的路径,从而避免显式的return。发生这种情况时,默认情况下返回None。在第二个版本中,通过使用无条件的return语句结束函数,可以避免这个问题。这是我推荐的做法。在

除了Ignacio Vazquez Abrams的评论之外,没有其他的块也被认为是不好的做法。在

所以如果你有这样的东西:

if spam:
    return eggs

确保您还有其他:

^{pr2}$

你把缩进弄错了,把标签和空格混在一起。使用python -tt进行验证。在整个过程中坚持elif,除非你有理由证明不止一个if语句是正确的。在

相关问题 更多 >