gpt4 book ai didi

python - 为什么 `None is None is None` 返回 True?

转载 作者:IT老高 更新时间:2023-10-28 20:24:09 28 4
gpt4 key购买 nike

今天,在一次采访中,CTO 问了我一个看似简单的问题,

这个语句返回什么? :

None is None is None

我认为 Python 执行了第一个操作 None is None 并且会返回 True。之后,它将比较返回 FalseTrue is None。但是,令我惊讶的是,正确的答案是 True。我试图找到这个问题的答案,但经过几天的搜索,我什么也没找到。有人可以解释为什么会这样吗?

最佳答案

字节码显示这里正在执行两个比较,中间被复制:

>>> import dis
>>> def a():
... return None is None is None
...
>>> dis.dis(a)
2 0 LOAD_CONST 0 (None)
3 LOAD_CONST 0 (None)
6 DUP_TOP
7 ROT_THREE
8 COMPARE_OP 8 (is)
11 JUMP_IF_FALSE_OR_POP 21
14 LOAD_CONST 0 (None)
17 COMPARE_OP 8 (is)
20 RETURN_VALUE
>> 21 ROT_TWO
22 POP_TOP
23 RETURN_VALUE

docs for comparisons 中所述这是因为这些运算符链接在一起。

a op b op c 将被翻译为 a op b 和 b op c(注意 b 在字节码中重复,如图所示以上)

关于python - 为什么 `None is None is None` 返回 True?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50951076/

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