Python函数在返回后不会结束

时间:2018-01-22 18:13:14

标签: python-3.x if-statement return control-flow

enter image description here据我所知,一旦函数返回,函数调用就会终止(即函数内不再执行代码)。我想测试一个if语句并返回一个值,如果它是真的,然后立即退出该函数而不在该函数中执行其他代码。但是,我的日志输出显示我正在输入if,返回,然后继续执行函数中if块后面的代码。一旦遇到与左侧车道关联的return语句,如何退出该功能?

def insanity(self, pts_y, pts_x, lane='left'):
    # no pts detected, return saved points from instance
    if (len(pts_y) == 0 or len(pts_x) == 0):
        if lane == 'left':
            self.logger.warning('Sanity Check: left should be returning')
            return self.lefty_p, self.leftx_p # return saved instance value
        elif lane == 'right':
            self.logger.warning('Sanity Check:right should be returning')
            return line_fit, self.righty_p, self.rightx_p # return saved instance value
        else: self.logger.warning('Sanity Check: Did not properly return buffered points')

    self.logger.warning('Should not be getting passed if')

日志输出:

警告 - 完整性检查:左侧应该返回

警告 - 如果

,不应该通过

1 个答案:

答案 0 :(得分:0)

感谢您的建议并确认控制流程的正确操作!你的说法是正确的,你是对的。问题是疯狂()被多次调用。 if块下面的语句正确执行,因为在后续调用中if块为false(从而允许在函数内继续执行)。