gpt4 book ai didi

python 不对 bool 进行严格的类型检查

转载 作者:太空宇宙 更新时间:2023-11-03 12:17:24 27 4
gpt4 key购买 nike

我一直读到python有严格的类型检查-

>>> 1 + 'hello'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

这很好,因为我们不能将 int 添加到字符串中

但为什么允许以下内容?

>>> True + False
1
>>> True + 0
1

为什么在将 int 添加到 bool 值时不支持严格检查?

最佳答案

>>> issubclass(bool, int)
True

这说明了一切。即 boolint 的子类.这就是为什么你可以使用 bool任何地方 int是允许的。

有关详细信息,see the PEP that introduced the type .

编辑:光泽度

注意 Python 没有 bool键入其生命的第一个十年。概念上的“真/假”操作通常返回 1 或 0。 Python 程序员利用它的频率与 K&R C 程序员利用它的频率一样高。例如,

sum(x < 2 for x in some_list)

返回了 some_list 中的元素数量小于 2. 添加 bool 时类型,当然还有像 < 这样的运算符必须更改以返回 TrueFalse相反,大量 依赖于 1 或 0 返回值的代码会被破坏。这是为什么 bool 的关键原因被设为 int 的子类型,仅限于值 0 和 1(具有更漂亮的名称 FalseTrue )。

关于python 不对 bool 进行严格的类型检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20756199/

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