仅当我将数字绑定到名称时,才能对数字调用方法:
>>> a = 5
>>> a.bit_length()
3
我可以调用字符串文本的方法:
>>> 'Hello World'.lower()
'hello world'
但我不能调用数值文本的方法:
>>> 5.bit_length()
这会引起SyntaxError
。这有实际原因吗,还是历史原因?你知道吗
编辑刚刚找到这个related question显示了解决方法(这里也已经建议了)。我想这也回答了主要的问题-简单的解决方法可用,使语法更复杂(更难解析)可能没有足够的好处使这项工作。你知道吗
实际上,这四个规则有点错误,语法错误的原因不是
fraction
规则不匹配。你知道吗语法错误的原因是使用此规则将其解析为浮点:
数字匹配第二种形式,即整数部分后跟一个
.
-5.
是浮点的有效文本,5.bit_length
生成的标记流生成两个标记:5.
(即,浮点5.0
)和bit_length
;浮点文本后跟一个名称在python中是语法错误的。你知道吗实际上可以调用float方法,但是有两个点:
要调用
int
方法,需要将5
与.
分开,以便将它们作为单独的标记进行解析。你知道吗浮点数按照以下规则进行分析,quoting from the docs
当Python看到
5.
时,它认为语法遵循[intpart] fraction | intpart "."
规则。因此,它选取下一个字符并发现它与fraction
规则不匹配。这就是抛出语法错误的原因。你知道吗你可以通过
或者用这样的括号括起来
相关问题 更多 >
编程相关推荐