为什么在Python中对数值文本调用方法是语法错误?
仅当我将数字绑定到名称时,才能对数字调用方法:为什么在Python中对数值文本调用方法是语法错误?,python,syntax,Python,Syntax,仅当我将数字绑定到名称时,才能对数字调用方法: >>> a = 5 >>> a.bit_length() 3 我可以调用字符串文本的方法: >>> 'Hello World'.lower() 'hello world' >>> 5.bit_length() 但我无法对数值文本调用方法: >>> 'Hello World'.lower() 'hello world' >>> 5.bi
>>> a = 5
>>> a.bit_length()
3
我可以调用字符串文本的方法:
>>> 'Hello World'.lower()
'hello world'
>>> 5.bit_length()
但我无法对数值文本调用方法:
>>> 'Hello World'.lower()
'hello world'
>>> 5.bit_length()
这会引发一个语法错误。这有实际原因吗,还是历史原因
Edit刚刚找到了显示变通方法的方法(这里也已经建议了)。我想这也回答了主要的问题——有了简单的解决办法,让语法变得更复杂(更难解析)可能没有足够的好处来实现这一点。浮点数是按照以下规则解析的
当Python看到5.
时,它认为语法遵循[intpart]fraction | intpart.“
规则。因此,它拾取下一个字符并发现它与分数规则不匹配。这就是抛出语法错误的原因
你可以通过
5 .bit_length()
或者用这样的括号括起来
(5).bit_length()
实际上,这四个词有点错误,因为语法错误的原因不是分数规则不匹配
语法错误的原因是使用此规则将其作为浮点进行解析:
pointfloat ::= [intpart] fraction | intpart "."
该数字与第二种形式相匹配,它的整数部分后跟一个
-5。
是浮点的有效文本,由5产生的令牌流。bit_length
产生两个令牌:5.
(即float5.0
)和bit_length
;在python中,后跟名称的浮点文本是语法错误
但是,实际上可以使用2个点调用float方法:
>>> 5.0.hex()
'0x1.4000000000000p+2'
>>> 5..hex()
'0x1.4000000000000p+2'
要调用int
方法,您需要将5
与
分开,以使它们被解析为单独的标记。的可能重复项