【问题标题】:In Python 3,a = 'linux!',b = 'linux!',why id(a) is not equal id(b)? [duplicate]在 Python 3 中,a = 'linux!',b = 'linux!',为什么 id(a) 不等于 id(b)? [复制]
【发布时间】:2018-07-05 10:37:50
【问题描述】:

我用a = 'linux!', b = 'linux!', c = 'linux', d='linux',为什么会这样?

 Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 'linux!'
>>> b = 'linux!'
>>> id(a)
2502413115552
>>> id(b)
2502414669112
>>> c = 'linux'
>>> d = 'linux'
>>> id(c)
2502413088616
>>> id(d)
2502413088616
>>>

【问题讨论】:

  • 实施细节。如果这很重要,那么您可能做错了什么。
  • 'linux' 是合法标识符,'linux!'不是。

标签: python python-3.x


【解决方案1】:

Python 可以选择何时重用具有相等值的不可变对象。语言的语义并不规定 a 和 b 是否必须是同一个对象。

对象重用是一种权衡取舍的优化。我相信如果字符串可能是标识符,它们会被重用,但这可能只是一个谣言。

【讨论】:

    猜你喜欢
    • 2019-09-24
    • 1970-01-01
    • 2010-12-08
    • 2021-10-06
    • 2014-03-29
    • 2011-02-23
    • 2021-09-10
    • 2019-10-27
    相关资源
    最近更新 更多