You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python十六进制整数可访问属性,而十进制整数不行?

问题解析

这根本不是十进制整数功能更少,纯是Python词法解析器的规则差异:

  • 对于无前缀的十进制数,Python会优先把1.识别成浮点数的起始部分(相当于1.0的简写),所以1.real会被拆成1. real——小数点后面直接跟标识符real,完全不符合语法,自然抛出SyntaxError: invalid decimal literal。你要是写成(1).real或者1 .real(加个空格),就不会报错,能正常返回1,因为这时候解析器能明确区分整数1和属性访问操作。

  • 对于带前缀的进制数(0x/0b/0o),Python的词法规则里,这类数字的浮点数写法必须带指数部分(比如十六进制浮点数是0x1.0p0这种格式),所以0x1.不会被当成浮点数起始,解析器会把0x1识别为整数,.则是属性访问符,因此0x1.real能正常执行,返回整数的real属性值(整数的real属性就是它本身)。

至于Python2里的01.real报错,是因为Python2中0开头的数字是八进制,但八进制没有浮点数写法,01.会被判定为无效的八进制字面量,直接触发语法错误,和十进制的情况本质逻辑一致。

内容的提问来源于stack exchange,提问作者Sir Nate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 12:39:52