Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数字文本的调用方法_Python_Python 2.7 - Fatal编程技术网

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