【发布时间】:2015-06-24 21:42:18
【问题描述】:
所以我看到了these twoquestions on twitter。 1.real 是语法错误但1 .real 不是?
>>> 1.real
File "<stdin>", line 1
1.real
^
SyntaxError: invalid syntax
>>> 1 .real
1
>>> 1. real
File "<stdin>", line 1
1. real
^
SyntaxError: invalid syntax
>>> 1 . real
1
>>> 1..real
1.0
>>> 1 ..real
File "<stdin>", line 1
1 ..real
^
SyntaxError: invalid syntax
>>> 1.. real
1.0
>>> 1 .. real
File "<stdin>", line 1
1 .. real
^
SyntaxError: invalid syntax
【问题讨论】:
-
我猜
1.被贪婪地解析为浮点数,然后real缺少.,而1 .real将1解析为int。小数点周围不允许有空格,但“方法访问点”前后可以有空格(因为没有更好的名称)。 -
试试:
(1).realor1.0.realor1..real(都一样) -
有一些参数可以改变这种行为,但是如果你让
1.real成为一个属性访问,那么1.e4看起来就像一个属性访问,并且用于产生10000.0的完美代码突然产生一个属性错误。这不值得麻烦。我很确定 Ruby 允许这种访问,因为 int 有更多有趣的方法;我不确定他们如何处理它。 -
旁白:请尽量避免点击诱饵的问题标题——也就是说,请尝试添加足够的信息,以便人们可以合理地了解问题是否有趣或适用于他们之前 他们点击打开它。我已尝试在此处对其进行编辑。
标签: python