所以我在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
Run Code Online (Sandbox Code Playgroud) 由于一切都是python中的对象,甚至是文字,我们通常被允许直接在文字上调用方法.
例如:
'hello'.upper()
Run Code Online (Sandbox Code Playgroud)
从理论上讲,对于int literals来说,似乎应该允许同样的事情
例如:
4.bit_length()
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用,我不知道为什么.有任何想法吗?谢谢!
这不起作用.
>>> 10.__str__()
File "<stdin>", line 1
10.__str__()
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
但这很有效.
>>> (10).__str__()
'10'
Run Code Online (Sandbox Code Playgroud)
为什么围绕整数需要括号才能调用其方法?列表或其他数据类型似乎不需要它.
>>> [1, 2].__str__()
'[1, 2]'
>>> {'a': 'foo'}.__str__()
"{'a': 'foo'}"
Run Code Online (Sandbox Code Playgroud) 我注意到整数的一个相当奇怪的行为,例如,它不适用于浮点数或小数:
In [205]: 10.__add__
File "<ipython-input-205-24ed61a2ee18>", line 1
10.__add__
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
浮点数或小数不会发生这种情况:
In [211]: Decimal(10).__add__
Out[211]: <bound method Decimal.__add__ of Decimal('10')>
In [204]: 10.3.__add__
Out[204]: <method-wrapper '__add__' of float object at 0x7fb48c60f840>
Run Code Online (Sandbox Code Playgroud)