我可以str在字符串文字上调用方法.但我不能int在整数数字文字上调用方法:
Python 2.7.5+ (default, Sep 19 2013, 13:48:49)
>>> 1.bit_length()
File "<stdin>", line 1
1.bit_length()
^
SyntaxError: invalid syntax
>>> a = 1
>>> a.bit_length()
1
>>> ', '.join(['1', '2'])
'1, 2'
>>>
Run Code Online (Sandbox Code Playgroud)
这是为什么?
Python将其1.视为浮点数的开头,但无法解析该行的其余部分.将其更改为
(1).bit_length()
Run Code Online (Sandbox Code Playgroud)
通过用括号括起数字文字,我们确保python评估parens中的表达式,即1调用该数字上的方法.
Python定义了像这样的浮点文字
floatnumber ::= pointfloat | exponentfloat
pointfloat ::= [intpart] fraction | intpart "."
exponentfloat ::= (intpart | pointfloat) exponent
intpart ::= digit+
fraction ::= "." digit+
exponent ::= ("e" | "E") ["+" | "-"] digit+
Run Code Online (Sandbox Code Playgroud)
根据这个定义,词法分析器认为这1.bit_length()将是一个浮点字面值,因为1.匹配[intpart] fraction的开头.但该线的其余部分不匹配.这就是它失败的原因.
| 归档时间: |
|
| 查看次数: |
293 次 |
| 最近记录: |