V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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 · 2019-01-25 00:51:56 +08:00 · 2426 次点击
    这是一个创建于 1911 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 条回复    2019-01-25 11:24:49 +08:00
    junnplus
        1
    junnplus  
       2019-01-25 00:59:17 +08:00 via iPad   ❤️ 3
    关键字 python 小整数对象池
    参考: https://github.com/Junnplus/blog/issues/12
    kkk330
        2
    kkk330  
       2019-01-25 01:07:21 +08:00 via iPhone   ❤️ 1
    之前有人在 v 站问过类似的问题,可以先搜索下
    ooleslie
        3
    ooleslie  
    OP
       2019-01-25 01:08:19 +08:00
    @kkk330 谢谢,我主要不知道该用什么关键字搜索,不过 1 楼提供啦
    0xABCD
        4
    0xABCD  
       2019-01-25 08:04:07 +08:00 via Android   ❤️ 1
    Qzier
        5
    Qzier  
       2019-01-25 08:23:46 +08:00 via iPhone
    python 会缓存小数字和短字符串。
    Qzier
        6
    Qzier  
       2019-01-25 08:24:27 +08:00 via iPhone   ❤️ 1
    看 cpython 源码即可
    bruce00
        7
    bruce00  
       2019-01-25 08:39:54 +08:00 via iPhone   ❤️ 1
    楼主看看流畅的 python 第八章呢,应该就是讲的这个
    XxxxD
        8
    XxxxD  
       2019-01-25 08:55:58 +08:00   ❤️ 1
    >>> a = 258
    >>> b = a
    >>> id(a)
    14014704
    >>> id(b)
    14014704
    >>> id(258)
    14014816
    >>>
    我还记得超 256 不行,缓存小数字
    builtins
        9
    builtins  
       2019-01-25 09:51:24 +08:00 via iPad
    缓存的小整数池是-5 到 256 整数,超出这个范围 id 就不会相等,除非 a=257;b=257
    zepc007
        10
    zepc007  
       2019-01-25 11:10:51 +08:00
    @builtins 牛批,每次这个都记不住
    builtins
        11
    builtins  
       2019-01-25 11:24:49 +08:00
    强烈建议看一下 github 上的 wtfpython,长了见识
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1380 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:28 · PVG 01:28 · LAX 10:28 · JFK 13:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.