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】:
函数不能代表其调用者break
。 break
必须在语法上位于循环内。
【讨论】:
【参考方案3】:您想使用return
,而不是break
。
break
用于停止循环。
break 语句,就像在 C 中一样,跳出最小的封闭 for 或 while 循环。
return
用于退出函数并返回一个值。您也可以返回None
。
【讨论】:
【参考方案4】:break
关键字仅用于循环示例,并且必须在循环范围内。
更新您的函数以仅返回 True
或 False
:
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嵌套函数(内部函数)-数据隐藏