是否“|”运算符可以用来表示“或”吗?

问题描述 投票:0回答:1

我正在尝试为一个函数编写注释,它有两个可能的返回值,所以我这样写:

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,但是这个运算符没有按预期工作?

我对此感到非常困惑,希望有人能帮我解释一下。谢谢你。

这里一些图片可能会有所帮助。

Unmodified

Modified

Error info

Python version

python python-3.x annotations
1个回答
1
投票

答案来自@rochard4u:

好吧,问题来自于 None |真的。应该是无 |布尔

© www.soinside.com 2019 - 2024. All rights reserved.