V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ooleslie
V2EX  ›  Python

Python 中的数据映射是什么规则?

  •  
  •   ooleslie · Jan 25, 2019 · 3281 views
    This topic created in 2659 days ago, the information mentioned may be changed or developed.
    example.1
    input:
    a = 3
    b = a
    id(a)
    id(b)
    id(3)

    output:
    id(a)=4531258544
    id(b)=4531258544
    id(3)=4531258544

    example.2
    input:
    a = -1000
    b = a
    id(a)
    id(b)
    id(3)

    output:
    id(a)=4534237776
    id(b)=4534237776
    id(-1000)=4534237968

    为什么?

    主要想让大家推荐下,这块知识点应该看什么资料
    11 replies    2019-01-25 11:24:49 +08:00
    junnplus
        1
    junnplus  
       Jan 25, 2019 via iPad   ❤️ 3
    关键字 python 小整数对象池
    参考: https://github.com/Junnplus/blog/issues/12
    kkk330
        2
    kkk330  
       Jan 25, 2019 via iPhone   ❤️ 1
    之前有人在 v 站问过类似的问题,可以先搜索下
    ooleslie
        3
    ooleslie  
    OP
       Jan 25, 2019
    @kkk330 谢谢,我主要不知道该用什么关键字搜索,不过 1 楼提供啦
    0xABCD
        4
    0xABCD  
       Jan 25, 2019 via Android   ❤️ 1
    Qzier
        5
    Qzier  
       Jan 25, 2019 via iPhone
    python 会缓存小数字和短字符串。
    Qzier
        6
    Qzier  
       Jan 25, 2019 via iPhone   ❤️ 1
    看 cpython 源码即可
    bruce00
        7
    bruce00  
       Jan 25, 2019 via iPhone   ❤️ 1
    楼主看看流畅的 python 第八章呢,应该就是讲的这个
    XxxxD
        8
    XxxxD  
       Jan 25, 2019   ❤️ 1
    >>> a = 258
    >>> b = a
    >>> id(a)
    14014704
    >>> id(b)
    14014704
    >>> id(258)
    14014816
    >>>
    我还记得超 256 不行,缓存小数字
    builtins
        9
    builtins  
       Jan 25, 2019 via iPad
    缓存的小整数池是-5 到 256 整数,超出这个范围 id 就不会相等,除非 a=257;b=257
    zepc007
        10
    zepc007  
       Jan 25, 2019
    @builtins 牛批,每次这个都记不住
    builtins
        11
    builtins  
       Jan 25, 2019
    强烈建议看一下 github 上的 wtfpython,长了见识
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1545 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 16:34 · PVG 00:34 · LAX 09:34 · JFK 12:34
    ♥ Do have faith in what you're doing.