python中的数字n和(n)之间有什么区别

QVS*_*VSJ 2 python int python-3.x

print(type(1))
print(type((1)))
Run Code Online (Sandbox Code Playgroud)

给我

<class 'int'>
Run Code Online (Sandbox Code Playgroud)

print(id(1))
print(id((1)))
Run Code Online (Sandbox Code Playgroud)

给我

1555424112
1555424112
Run Code Online (Sandbox Code Playgroud)

然而(1)被认为是一个1不存在的实例?例如,做一个(1).在编辑器中我得到了很多的方法,比如bit_length,conjugate,__add__()等,但不这样做1.

这种区别的原因是什么?

Mar*_*ers 13

(..)只是组织一个表达.对于整数,它还具有副作用,即浮点小数.字符可以从属性访问运算符中消除歧义..

所以

1.bit_length()
Run Code Online (Sandbox Code Playgroud)

是语法错误,因为bit_length它不是实数的有效非整数部分.但

(1).bit_length()
Run Code Online (Sandbox Code Playgroud)

是有效的Python语法,因为现在解析器不会将.标记视为数字文字的一部分.

或者,添加一个空格:

1 .bit_length()
Run Code Online (Sandbox Code Playgroud)