带有 "general" 异常消息的条件“try”语句
Conditional `try` statement with a "general" exception message
我想 try
在条件为真时加载文件。如果发生文件异常或条件为假,我想要执行第二(一行)代码。
为了涉及鸟类,请考虑以下代码:
if try_to_fly:
try:
fly()
except FlyError:
walk("I'm walking instead of flying.")
else:
walk("I'm walking stead of flying.")
# more lines below #
这就是我想做的。但是,它有两次 walk("I'm walking stead of flying.")
行,最好避免。
此外,在此位下方还有更多代码需要执行,因此我们不能 return
在 try 语句中不考虑该代码。
是否有更 pythonic 的方法来做到这一点?
飞行成功可以设置变量
flying = False
if try_to_fly:
try:
fly()
flying = True
except FlyError:
pass
if not flying:
walk("I'm walking instead of flying.")
不使用任何附加变量:
try:
if try_to_fly:
fly()
else:
walk("I'm walking stead of flying.")
except FlyError:
walk("I'm walking instead of flying.")
您可以设置一个 bool
标志
b_need_print = True
if try_to_fly:
try:
fly()
b_need_print = False
except FlyError:
pass
if b_need_print:
walk("I'm walking stead of flying.")
所有答案都很好,但这可能对您有所帮助:
try:
if try_to_fly:
fly()
else:
raise FlyError()
except FlyError:
walk("I'm walking instead of flying.")
猜猜你想要这个:try / except / else 这种方式可以让你免于其他 if 语句
class FlyError(Exception): pass
def fly(tickets=True):
if tickets:
# ...
verify = True
# etc
else:
raise FlyError("no tickets")
if __name__ == "__main__":
for tickets in [ None, True]:
try:
print("My tickets: ", tickets)
fly(tickets)
except FlyError as e:
print("I'm walking instead of flying.")
else:
print("Nicely by plane!")
输出:
('My tickets: ', None)
I'm walking instead of flying.
('My tickets: ', True)
Nicely by plane!
我想 try
在条件为真时加载文件。如果发生文件异常或条件为假,我想要执行第二(一行)代码。
为了涉及鸟类,请考虑以下代码:
if try_to_fly:
try:
fly()
except FlyError:
walk("I'm walking instead of flying.")
else:
walk("I'm walking stead of flying.")
# more lines below #
这就是我想做的。但是,它有两次 walk("I'm walking stead of flying.")
行,最好避免。
此外,在此位下方还有更多代码需要执行,因此我们不能 return
在 try 语句中不考虑该代码。
是否有更 pythonic 的方法来做到这一点?
飞行成功可以设置变量
flying = False
if try_to_fly:
try:
fly()
flying = True
except FlyError:
pass
if not flying:
walk("I'm walking instead of flying.")
不使用任何附加变量:
try:
if try_to_fly:
fly()
else:
walk("I'm walking stead of flying.")
except FlyError:
walk("I'm walking instead of flying.")
您可以设置一个 bool
标志
b_need_print = True
if try_to_fly:
try:
fly()
b_need_print = False
except FlyError:
pass
if b_need_print:
walk("I'm walking stead of flying.")
所有答案都很好,但这可能对您有所帮助:
try:
if try_to_fly:
fly()
else:
raise FlyError()
except FlyError:
walk("I'm walking instead of flying.")
猜猜你想要这个:try / except / else 这种方式可以让你免于其他 if 语句
class FlyError(Exception): pass
def fly(tickets=True):
if tickets:
# ...
verify = True
# etc
else:
raise FlyError("no tickets")
if __name__ == "__main__":
for tickets in [ None, True]:
try:
print("My tickets: ", tickets)
fly(tickets)
except FlyError as e:
print("I'm walking instead of flying.")
else:
print("Nicely by plane!")
输出:
('My tickets: ', None)
I'm walking instead of flying.
('My tickets: ', True)
Nicely by plane!