Python打破内部函数[重复]

Posted

技术标签:

【中文标题】Python打破内部函数[重复]【英文标题】:Python Break Inside Function [duplicate] 【发布时间】:2016-09-20 19:59:25 【问题描述】:

我正在使用 Python 3.5,我想在函数中使用 break 命令,但我不知道如何。 我想使用这样的东西:

def stopIfZero(a):
    if int(a) == 0:
        break
    else:
        print('Continue')

while True:
    stopIfZero(input('Number: '))

我知道我可以使用这个代码:

while True:
    a = int(input('Number: '))
    if a == 0:
        break
    else:
        print('Continue')

如果你不关心print('Continue') 部分,你甚至可以这样做: while a != 0: a = int(input('Number: '))(只要 a 已经分配给 0 以外的东西) 但是,我想使用一个函数,因为其他时候它会很有帮助。

感谢您的帮助。

【问题讨论】:

您的stopIfZero 函数正试图做的比它应该做的更多。尝试将功能集中在一项任务上。 【参考方案1】:

通常,这是通过返回一些值来完成的,该值可让您决定是否要停止 while 循环(即某些条件是真还是假):

def stopIfZero(a):
    if int(a) == 0:
        return True
    else:
        print('Continue')
        return False

while True:
    if stopIfZero(input('Number: ')):
        break

【讨论】:

我知道你可以做到这一点,但想知道你可以用不同的方式做到这一点。我希望是的,你可以做到这一点,它很臭你不能。谢谢你的回答,这就是我要问的,即使不是我想要的。 @nedla2004 适用于break 的内容也适用于continue【参考方案2】:

函数不能代表其调用者breakbreak 必须在语法上位于循环内。

【讨论】:

【参考方案3】:

您想使用return,而不是break

break 用于停止循环。

break 语句,就像在 C 中一样,跳出最小的封闭 for 或 while 循环。

return 用于退出函数并返回一个值。您也可以返回None

【讨论】:

【参考方案4】:

break 关键字仅用于循环示例,并且必须在循环范围内。

更新您的函数以仅返回 TrueFalse

def is_zero(value):
    if value == 0:
        return True
    return False

然后在你的循环中,像这样简单地使用:

while True:
    try:
        value = int(input("Enter a value (0 to exit): "))
    except ValueError:
        # user entered a non-numeric value (e.g. a letter)
        # try asking again immediately instead of crashing :)
        print('Use numbers only, please')
        continue

    if is_zero(value):
        break

    print('Good entry. Continuing...')

您的 stopIfZero 函数也有些重载(即不仅有 1 个职责),因为它不仅仅检查值是否为零。比如它:

    将参数转换为int, 打印一条消息,然后 不可在程序的其他部分重复使用

考虑这些原因来改进您的代码。

【讨论】:

以上是关于Python打破内部函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python入门-5函数:09嵌套函数(内部函数)-数据隐藏

变量如何在函数内部取值而不在任何地方声明它[重复]

Python:如何允许“内部函数”更改多个“外部函数”中的非局部变量

如何在python的内部for循环中打破while循环?

内部类的公共构造函数是啥意思[重复]

如何使局部变量(在函数内部)全局[重复]