Python 数字文本的调用方法
我可以对字符串文本调用Python 数字文本的调用方法,python,python-2.7,Python,Python 2.7,我可以对字符串文本调用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_lengt
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'
>>>
Python 2.7.5+(默认,2013年9月19日,13:48:49)
>>>1.比特长度()
文件“”,第1行
1.比特长度()
^
SyntaxError:无效语法
>>>a=1
>>>a.位长度()
1.
>>>连接(['1','2'])
'1, 2'
>>>
为什么会这样?Python将
1.
视为浮点数的开头,但无法解析行的其余部分。换成
(1).bit_length()
通过用括号括住数字文字,我们确保python计算参数中的表达式,即1
,并调用该数字的方法
Python定义如下
floatnumber ::= pointfloat | exponentfloat
pointfloat ::= [intpart] fraction | intpart "."
exponentfloat ::= (intpart | pointfloat) exponent
intpart ::= digit+
fraction ::= "." digit+
exponent ::= ("e" | "E") ["+" | "-"] digit+
根据该定义,词法分析器认为
1.bit_length()
将是浮点文字,因为1.
匹配[intpart]分数的开头。但其余部分不匹配。这就是它失败的原因。1.bit_length()
也应该工作,但它很难看。Ruby如何处理3.times
?