我遇到了以下问题:
正如您所料:
>>> [01,02,03]
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
将superflous添加0到整数的前面会导致整数N的数学等价0N,即N.
但是,当我这样做时:
>>> [030, 031, 031, 031, 030, 031, 031, 032, 031, 032]
[24, 25, 25, 25, 24, 25, 25, 26, 25, 26]
Run Code Online (Sandbox Code Playgroud)
事实证明这一观点完全不正确.我试图通过尝试检查是否030为int 来弄清楚为什么会这样:
>>> type(030)
<type 'int'>
Run Code Online (Sandbox Code Playgroud)
然后我想也许,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>
Run Code Online (Sandbox Code Playgroud)
这无助于澄清为什么会出现这种情况.那么,这种行为背后的共鸣是什么?
根据标题:
>>> 030 == 24
True
Run Code Online (Sandbox Code Playgroud)
Joh*_*ooy 10
主要0方式是八进制或基数8.这是Python2定义的行为,但是由于它导致的混乱,你现在需要0o30用Python3 编写,就像你写0x18的十六进制数一样
该0o30语法也能在Python2.7,所以它的使用这个,如果你希望写八文字是个好主意
这也是为什么08,并09会导致错误- 8和9不是有效的八进制数字
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |