gpt4 book ai didi

python - 区分循环中的多个导出点

转载 作者:太空狗 更新时间:2023-10-29 18:33:44 25 4
gpt4 key购买 nike

我在看 python lecture by Raymond Hettinger on youtube .他展示了退出 for 循环的正确方法:

def find(seq, target):
for i, value in enumerate(seq):
if value == target:
break
else:
return -1
return i

我不明白为什么要用 else 语句而不只是做:

def find(seq, target):
for i, value in enumerate(seq):
if value == target:
return i
return -1

我是不是遗漏了什么,或者有时出于某种原因添加这个 else/break 语句只是个好主意?

最佳答案

简明回答:一旦你使用 return 你就脱离了你的功能。 Break 意味着代码继续运行,你可以添加更多的东西。所以你在你的例子中是正确的,但是如果你想在没有找到任何东西的情况下做更多的事情怎么办:

引发错误:

def find(seq, target):
for i, value in enumerate(seq):
if value == target:
break
else:
raise ValueError("Nothing found in {}".format(seq))
return i


find("hello","a")

或者写入文件:

def find(seq, target):
for i, value in enumerate(seq):
if value == target:
break
else:
with open("output.txt", "w") as f:
f.write("Nothing found :(((")
return i


find("hello","a")

进一步发展(@Joe Iddon):

您可能还想继续:

def find(seq, target):
for i, value in enumerate(seq):
if value == target:
break
else:
return "Nothing found"

# calculate more things
a = [1,2,3]
if i in a:
return i
else:
return "Not in a"


find("hello","a")

所以对于这个小目的来说,这是没有必要的。但是,如果您在此基础上构建某些内容,则 else 子句可能会有用。

关于python - 区分循环中的多个导出点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47124808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com