【发布时间】:2021-05-12 04:55:59
【问题描述】:
假设我有一个函数可以对传入的值进行多次检查。
通常情况下,违规行为会向用户发出警告,用户会注意到并相应地纠正。这需要通过可选输入进行调整,因此会根据参数输出错误或警告。
下面的 sn-p 只会创建一个 TypeError 对象,因为它需要被提升。
def is_even(a: int, on_error: Literal["warn", "error"] = "warn") -> bool:
error_handler = ValueError if on_error == 'error' else warnings.warn
if a % 2 == 0:
return True
else:
error_handler(f"{a=} is not an even number.")
return False
有没有办法将 raise TypeError 分配给变量,或者在不退出函数的情况下引发警告?
鉴于函数中的检查数量,赋值将大大提高可读性,因为它避免了每次检查时的 if-else 语句。
【问题讨论】:
标签: python error-handling warnings