Python 移除 try inside except?
Python remove try inside except?
在 python 中,我有一个名为 func()
的函数可以引发 NoSuchElementException
:
我正在尝试用 input1
调用它,如果不正确,请用 input2
调用它,否则放弃。
为了清晰起见,是否有更好的方法来编写此代码:
submit_button = None
try:
submit_button = func(input1)
except NoSuchElementException:
try:
submit_button = func(input2)
except NoSuchElementException:
pass
你可以这样做:
for i in [input1, input2]:
try:
submit_button = func(i)
break
except NoSuchElementException:
print(f"Input {i} failed")
else:
print("None of the options worked")
如果第一个输入没有抛出异常,则中断循环,否则继续循环并尝试第二个输入。
通过这种方式,您可以尝试任意多的输入,只需将它们添加到列表中即可
如果您从未中断循环,最后的 else 将执行,这意味着 none 个选项有效
如果您想尝试多个输入并平等对待它们,这很有效。对于只有两个输入,您的代码对我来说看起来足够可读。 (试试这个,如果不行就试试那个)
只是另一种选择...
from contextlib import suppress
submit_button = None
for i in input1, input2:
with suppress(NoSuchElementException):
submit_button = func(i)
break
在 python 中,我有一个名为 func()
的函数可以引发 NoSuchElementException
:
我正在尝试用 input1
调用它,如果不正确,请用 input2
调用它,否则放弃。
为了清晰起见,是否有更好的方法来编写此代码:
submit_button = None
try:
submit_button = func(input1)
except NoSuchElementException:
try:
submit_button = func(input2)
except NoSuchElementException:
pass
你可以这样做:
for i in [input1, input2]:
try:
submit_button = func(i)
break
except NoSuchElementException:
print(f"Input {i} failed")
else:
print("None of the options worked")
如果第一个输入没有抛出异常,则中断循环,否则继续循环并尝试第二个输入。
通过这种方式,您可以尝试任意多的输入,只需将它们添加到列表中即可
如果您从未中断循环,最后的 else 将执行,这意味着 none 个选项有效
如果您想尝试多个输入并平等对待它们,这很有效。对于只有两个输入,您的代码对我来说看起来足够可读。 (试试这个,如果不行就试试那个)
只是另一种选择...
from contextlib import suppress
submit_button = None
for i in input1, input2:
with suppress(NoSuchElementException):
submit_button = func(i)
break