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

时间:2016-05-05 10:17:30

标签: python python-3.x int

print(type(1))
print(type((1)))

给了我

<class 'int'>

另外

print(id(1))
print(id((1)))

给了我

1555424112
1555424112

但是(1)被视为1不是的实例? 例如,在做(1)时。在编辑器中,我得到了许多方法,例如bit_lengthconjugate__add__()等,但没有做1

区别的原因是什么?

3 个答案:

答案 0 :(得分:13)

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

所以

1.bit_length()

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

(1).bit_length()

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

或者,添加一个空格:

1 .bit_length()

答案 1 :(得分:2)

n和(n)是相同的表达式。

但请注意这个(n,)是一个元素的元组。

id()不是比较表达式的方法。它告诉你是否 你的对象是同一个对象。而且Python对待的数量很少 特别是在任何python会话中id()总是相同的。

所以你得到这种行为:

对于(1 + 1-1)

,id()与id(1)相同
>>> id(1),id(1+1-1)
(140246128484064, 140246128484064)

但是对于较大的数字,id()会发生变化。

>>> id(3000000),id(3000000+1-1)
(140246130143120, 140246129522640)

使用==进行表达式比较。

答案 2 :(得分:-2)

要打印它,你就可以了 打印(n1-n2)