【问题标题】:Why does assigning variable with an integer is always constant when using id()? [duplicate]为什么在使用 id() 时用整数分配变量总是不变的? [复制]
【发布时间】:2019-09-15 20:02:43
【问题描述】:

当我将整数分配给变量时,无论我刷新多少次代码,它的 id() 仍然相同。但是,字符串和元组 x 和 z 分别在发生变化,到底发生了什么?

x = '100'
y = 100
z = (100,)

print('string:', id(x))  # changing
print('integer:', id(y))  # constant
print('tuple:', id(z))  # changing


##########################################################################
# INITIAL
# string: 47850176
# integer: 1804263136
# tuple: 47679056
#
# REFRESH
# string: 15409856
# integer: 1804263136
# tuple: 15238736
##########################################################################

【问题讨论】:

  • 使用大于 256 或小于 -5 的整数 ...

标签: python python-3.x


【解决方案1】:

在 python 中,小整数是预定义的常量值(出于性能原因)。

>>> x = 10
>>> x is 10
True
>>> x = 123456
>>> x is 123456
False

(作为练习,您可以将其放在 for 循环中以查找边界)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 2021-04-14
    • 2021-06-20
    • 2019-07-08
    • 1970-01-01
    • 2021-03-24
    相关资源
    最近更新 更多