Skip to main content
 首页 » 编程设计

Python 030 == 24 是 True,如何正确

2025年05月04日9wuhuacong

<分区>

我遇到了以下问题:

如你所料:

>>> [01,02,03] 
[1, 2, 3] 

将多余的 0 添加到整数 N 的前面会导致整数 0N 的数学等价物,即 N.

但是当我这样做的时候:

>>> [030, 031, 031, 031, 030, 031, 031, 032, 031, 032] 
[24, 25, 25, 25, 24, 25, 25, 26, 25, 26] 

这个概念被证明是完全不正确的。我试图通过检查 030 是否为 int 来弄清楚为什么会这样:

>>> type(030) 
<type 'int'> 

然后我想也许是这样,030 被计算为 24 然后它变成了 type(24)。所以我想看看 dis 发生了什么可能会有所帮助:

>>> dis.dis('n=030') 
          0 JUMP_FORWARD    12349 (to 12352) 
          3 DELETE_SLICE+1  
          4 <48>            
>>> dis.dis('n=30') 
          0 JUMP_FORWARD    13117 (to 13120) 
          3 <48>     

这无助于弄清楚为什么会出现这种行为。那么,这种行为背后的原因是什么?

根据标题:

>>> 030 == 24 
True