Skip to main content
 首页 » 编程设计

python之对 int 文字的属性访问

2025年05月04日14qq78292959

>>> 1 .__hash__() 
1 
>>> 1.__hash__() 
  File "<stdin>", line 1 
    1.__hash__() 
             ^ 
SyntaxError: invalid syntax 

之前这里已经介绍过,第二个示例不起作用,因为 int 文字实际上被解析为 float。

我的问题是,当解释为 float 是语法错误时,为什么 python 不将其解析为对 int 的属性访问? lexical analysis 上的文档部分似乎建议只有在其他解释不明确时才需要空格,但也许我读错了这一部分。

直觉上词法分析器似乎很贪婪(试图尽可能获取最大的标记),但我没有这种说法的来源。

请您参考如下方法:

词法分析器非常简单,不会回溯。语言解析器通常分为词法分析阶段和解析阶段,或者词法分析器和解析器。词法分析器将字符流分解为标记,然后解析器根据标记确定程序结构。词法分析器看到四个标记:1., __hash__, (, ):float, identifier, open-paren , 近亲。解析器无法理解这些标记,但这并不意味着词法分析器会尝试以不同方式对字符进行词法分析。