将 None 转换为异常

时间:2021-04-16 11:54:42

标签: python

如果我有一个可以返回 None 的函数(我不能改变这个函数):

def maybe() -> Optional[str]:
  ...

我想在表达式中使用它,例如像这样:

x = "Hello " + maybe() + " world"

这当然不进行类型检查,但我想让它在 maybe() 返回 None 时抛出异常。 (而且我希望它在一般情况下工作并通过类型检查;我不想仅仅依靠 + 抛出异常。)

显然我可以写一个函数来做到这一点:

T = TypeVar('T')

def throw_if_none(x: Optional[T]) -> T:
  if x is None:
    raise Exception(...)
  return x

然后我可以这样做:

x = "Hello " + throw_if_none(maybe()) + " world"

但是是否有一种内置的方法可以做到这一点而无需我编写该函数?

明确地说,我希望必须修改 x = 行。我想避免定义 maybe()。我很确定没有解决方案,但我想我应该检查一下,以防我错过了什么。

0 个答案:

没有答案