我正在尝试为一个函数编写注释,它有两个可能的返回值,所以我这样写:
def func() -> None | True:
...
然后我运行它,但它给出了这样的错误:
TypeError:| 不支持的操作数类型:“NoneType”和“bool”
我已经在Python 3.10版本中使用过这种写法,并且效果很好, 但现在,在 3.11.4 版本中,似乎根本不起作用。
然后我尝试在互联网上寻找解决方案,最受欢迎的答案之一是使用“打字”模块。
所以我修改了我的代码,如下所示:
from typing import Union
def func() -> Union[None, True]:
...
真的很有用,错误消失了,但是为什么呢?
我找到了“typing”模块的主文件,在第654行找到了类型Union,看到它的描述如下:
“在 Python 3.10 及更高版本中,| 运算符也可用于表示并集;”
所以我的Python版本是3.11.4,但是这个运算符没有按预期工作?
我对此感到非常困惑,希望有人能帮我解释一下。谢谢你。
这里一些图片可能会有所帮助。
答案来自@rochard4u:
好吧,问题来自于 None |真的。应该是无 |布尔