相关疑难解决方法(0)

为什么bool是int的子类?

当通过python-memcached在memcached中存储bool时,我注意到它以整数形式返回.检查库的代码向我显示有一个地方isinstance(val, int)被检查以将值标记为整数.

所以我在python shell中测试了它并注意到以下内容:

>>> isinstance(True, int)
True
>>> issubclass(bool, int)
True
Run Code Online (Sandbox Code Playgroud)

但为什么究竟是bool一个子类int呢?

它有点意义,因为布尔值基本上是一个int,它可以只取两个值,但它需要比实际整数少得多的操作/空间(没有算术,只有一点存储空间)....

python boolean

79
推荐指数
2
解决办法
1万
查看次数

Python set 类、float 和 int 求值

我还没有看到它的实现细节,set Class但我认为这个问题的答案就在某个地方。Python 赋值基本上评估右值并使用标识符作为引用对象来指向类对象。集合也是如此,即它们是抽象数据结构或引用对象的“集合”。集合不允许重复,当我创建一个集合时,如下所示:

s1 = {False, 1.0, 1, "a"} > {False, 1.0, "a"}
Run Code Online (Sandbox Code Playgroud)

Float 类胜过 int 类,显然它们评估的是相同的东西。但是为什么float显示而init不显示呢?我似乎无法找到合适的答案或在源代码中看到它。

顺便说一句,我想提一下,我注意到,如果 True 和 False 都使用 .union() 操作出现,则 True 和 False 将以某种方式分别代替 1 和 0 。因此,浮点型胜过整数型,而整数型胜过布尔型。但,

>>> s1 = {False, 'a', 1}
>>> s2 = {True, 'a', 0}

>>> s1 | s2
{False, 1, 'a'} 
Run Code Online (Sandbox Code Playgroud)

错误仍然存​​在..我不知道这是否是 REPL 问题,但再次测试后我{0, 1, 'a'}每次都会得到我不知道发生了什么。

>>> s1 = {True, 'a', 1}
>>> s1
{1, 'a'}
>>> s2 = {False, 'a', 0}
>>> s2 …
Run Code Online (Sandbox Code Playgroud)

python collections class set

7
推荐指数
1
解决办法
1456
查看次数

True 和 1 和 1.0 在 python 字典中被评估为相同

谁能解释一下 python 字典的这种行为?

d = {}
d[True] = 'Magic'
d[1] = 'Cool'
d[1.0] = 'Hello'
print(d)

# {True: 'Hello'}
Run Code Online (Sandbox Code Playgroud)

为什么它不打印所有其他(键,值)对?

为什么 True、1 和 1.0 被评估为相同?

python dictionary boolean

3
推荐指数
1
解决办法
1909
查看次数

标签 统计

python ×3

boolean ×2

class ×1

collections ×1

dictionary ×1

set ×1