if和elif之间的Python变量

Wes*_*ssi 2 python if-statement python-3.x

以下是无效语法,因为elif需要在if块之后:

def get_number(self, bsObj):
    temp = self.get_data('text1', bsObj)
    if temp > -1:
        return temp
    temp = self.get_info('text', bsObj)
    elif temp > -1:
        return temp
    else:
        return 0
Run Code Online (Sandbox Code Playgroud)

我只想返回self.get_info('text', bsObj)if self.get_data('text1', bsObj)小于-1 的结果.

我可以通过这样做来修复它,但是调用相同的函数两次似乎非常无效:

def get_number(self, bsObj):
    if self.get_data('text1', bsObj) > -1:
        return self.get_data('text1', bsObj)
    elif self.get_info('text', bsObj) > -1:
        return self.get_data('text', bsObj)
    else:
        return 0
Run Code Online (Sandbox Code Playgroud)

Wil*_*sem 5

您可以使用第二个if:

def get_number(self, bsObj):
    temp = self.get_data('text1', bsObj)
    if temp > -1:
        return temp
    temp = self.get_info('text', bsObj)
    if temp > -1:
        return temp
    else:
        return 0
Run Code Online (Sandbox Code Playgroud)

由于第一个if 包含return语句,elif如果满足约束,解释器将永远不会到达您的行.