首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从显式返回False的函数中不接收任何

从显式返回False的函数中不接收任何
EN

Stack Overflow用户
提问于 2017-03-23 15:18:13
回答 2查看 49关注 0票数 0

我有一个函数,可以迭代测试并执行它们。在执行每个测试之前,它调用一个函数confirm_execute()来检查测试是否已被取消。confirm_execute()如下所示(请原谅调试消息的混乱):

代码语言:javascript
复制
def confirm_execute(self):
    self._update_hil_status()
    status = self.hil_status['status']
    print 'STATUS =', status

    if status == 'TESTING':
        return True
    elif status == 'CANCEL':
        print '##### Cancelling #####'
        return False

    elif status == 'REQUEST_STOP':
        print '##### Stopping tests #####'
        self._set_hil_status(status='STOPPED')
    elif status == 'STOPPED':
        time.sleep(5)
    elif status == 'RESUME':
        print '##### Resuming tests #####'
        self._set_hil_status(status='TESTING')
    else:
        print '##### Invalid status {} - setting stop status #####'.format(status)
        self._set_hil_status(status='STOPPED')

    self.confirm_execute()  # only exit if status is testing or cancel

函数在执行测试之前检查权限的部分如下:

代码语言:javascript
复制
allow = self.status.confirm_execute()
if allow:
    print 'continue: {}'.format(allow)
    # run a test
else:
    print 'cancel: {}'.format(allow)
    # clean up

问题是:当我将status设置为CANCEL时,confirm_execute似乎返回None而不是False。当我停止一组测试,然后尝试取消时,控制台上的输出如下:

代码语言:javascript
复制
STATUS = REQUEST_STOP
##### Stopping tests #####
SETTING STOPPED
STATUS = STOPPED
STATUS = STOPPED
STATUS = CANCEL
##### Cancelling #####
cancel: None

注意,我得到了##### Cancelling #####消息,这意味着我应该返回False。然而,接收到的allow的值似乎是None

我犯了什么简单的错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-23 15:26:06

在这里,递归不是合适的解决方案。每次结果不是取消或测试时,函数都会调用自己;但是,您不会从这些嵌套调用中返回值,因此它们将丢失。

而不是递归,您应该将整个函数放在一个while True循环中,因此它将继续循环,直到达到返回的情况之一。

票数 3
EN

Stack Overflow用户

发布于 2017-03-23 15:22:12

您的函数只显式地返回TESTINGCANCEL的值。否则,它只打印东西,调用自己,不显式地返回任何内容。这意味着它隐式地返回None

你想要的是return self.confirm_execute()

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42980181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档