【问题标题】:What is the difference between a number n and (n) in pythonpython中的数字n和(n)有什么区别
【发布时间】:2016-08-31 02:05:47
【问题描述】:
print(type(1))
print(type((1)))

给我

<class 'int'>

还有

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

给我

1555424112
1555424112

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

区分的原因是什么?

【问题讨论】:

    标签: python python-3.x int


    【解决方案1】:

    要打印它,您只需执行 打印(n1-n2)

    【讨论】:

      【解决方案2】:

      n 和 (n) 是同一个表达式。

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

      id() 不是比较表达式的方法。它告诉你如果 你的对象是同一个对象。而Python对待小数 特别是这样 id() 在任何 python 会话中总是相同的。

      所以你得到了这种行为:

      id() 与 id(1) 相同,用于 is(1+1-1)

      >>> id(1),id(1+1-1)
      (140246128484064, 140246128484064)
      

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

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

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

      【讨论】:

      【解决方案3】:

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

      所以

      1.bit_length()
      

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

      (1).bit_length()
      

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

      或者,添加一个空格:

      1 .bit_length()
      

      【讨论】:

        猜你喜欢
        • 2011-04-18
        • 1970-01-01
        • 2016-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-28
        • 2011-02-06
        • 1970-01-01
        相关资源
        最近更新 更多