有人能解释为什么我的变量x返回到它的这些步骤后,前ID:为什么Python中的变量在来回转换之后返回到原ID?
>>> x = 10
>>> id(x)
497834400
>>> x = str(x)
>>> id(x)
48840576
>>> x = int(x)
>>> id(x)
497834400
有人能解释为什么我的变量x返回到它的这些步骤后,前ID:为什么Python中的变量在来回转换之后返回到原ID?
>>> x = 10
>>> id(x)
497834400
>>> x = str(x)
>>> id(x)
48840576
>>> x = int(x)
>>> id(x)
497834400
变量int数据类型为寿命和x的生命周期中可用还没有完成。 实际上,它通过将x转换回int来指向x的int类型。
因为10是python中所谓的小整数。 Python会将[-5,257)之间的小整数缓存在名为“small_ints”的池中。所以[-5,257]中的整数实例都是在整个python中共享的,这就是id(10)总是返回相同地址的原因。
What is the number returned from the function id() ?
它是“这是保证其寿命期间该对象独特和恒定的整数(或长整数)。” (Python标准库 - 内置函数)唯一编号。没有更多,也没有少。把它看作是Python对象的社会安全号码或员工身份号码。
Is it the same with memory addresses in C ?
从概念上讲,是的,他们都保证在其一生中,在他们的宇宙独一无二的。在Python的一个特定实现中,它实际上是相应C对象的内存地址。
x'的'转换之前和之后的值是相同数量的10.这就是为什么它具有相同的ID。 – DyZ
@DYZ虽然对于对象通常不是真的,但对于在-5到256之间的整数,仅在CPython上才是真实的 –
@ juanpa.arrivillaga我没有推广到_objects_,我只是提出了10的索赔。我同意你的其他评论。 – DyZ