gpt4 book ai didi

python - 一行异常处理

转载 作者:太空宇宙 更新时间:2023-11-03 21:11:52 25 4
gpt4 key购买 nike

在Python中,可以使用单行代码以一种简单、直观的方式设置具有特殊条件(例如默认值或条件)的值。

result = 0 or "Does not exist."  # "Does not exist."

result = "Found user!" if user in user_list else "User not found."

是否可以编写类似的语句来捕获异常?

from json import loads

result = loads('{"value": true}') or "Oh no, explosions occurred!"
# {'value': True}

result = loads(None) or "Oh no, explosions occurred!"
# "Oh no, explosions occurred!" is desired, but a TypeError is raised.

最佳答案

在 python 中不可能执行一行异常处理语句。人们可以编写一个函数来执行此操作。

def safe_execute(default, exception, function, *args):
try:
return function(*args)
except exception:
return default

使用示例:

from json import loads
safe_execute("Oh no, explosions occurred!", TypeError, loads, None)
# Returns "Oh no, explosions occurred!"
safe_execute("Huh?", TypeError, int, "10")
#Returns 10

支持多个参数

from operator import div
safe_execute(
"Divsion by zero is invalid.",
ZeroDivisionError,
div, 1, 0
)
# Returns "Divsion by zero is invalid."

safe_execute(
"Divsion by zero is invalid.",
ZeroDivisionError,
div, 1, 1
)
# Returns 1.

错误捕获过程仍可能被中断:

from time import sleep
safe_execute(
"Panic!",
Exception,
sleep, 8
)
# Ctrl-c will raise a KeyboardInterrupt

from sys import exit
safe_execute("Failed to exit!", Exception, exit)
# Exits the Python interpreter

如果不希望出现此行为,请使用BaseException:

from time import sleep
safe_execute("interrupted",
BaseException,
sleep, 8)
#Pressing Ctrl-c will return "interrupted"
from sys import exit
safe_execute("Naughty little program!",
BaseException,
exit)
#Returns "Naughty little program!"

关于python - 一行异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55012481/

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