首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
华为云
V2EX  ›  Python

python__builtin__.py 源代码,内建类 dict 的__init__和其他方法都是 pass,那这 dict 到底咋实现的?有鬼了?

  •  
  •   lsj8924 · 41 天前 · 1437 次点击
    这是一个创建于 41 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如图,这是 python 内建的类的原代码,一堆 pass,那 dict 的功能靠 pass 实现的?这代码也太魔幻了吧。

        1
    neoblackcap   41 天前
    dict 是通过 C 语言实现的,据我理解,__built__.py 只是一个 stub 而已
        2
    chengluyu   41 天前
    都说了是 built-in 了……
        3
    innoink   41 天前 via Android
    这个是编辑器生成的假文件
        4
    lsj8924   41 天前
    @chengluyu built-in 官方解释是可以随时调用的,没说咋指的是实现方式吧。
        5
    xiaojie668329   41 天前
    这些方法可能是它的抽象基类的抽象方法,必须实现的,然后这里继承了但是不提供实现细节,你可以自己继承实现。我猜的。。
        6
    wwqgtxx   41 天前 via iPhone
    @lsj8924 问题是你这个__builtin__.py 只是 pycharm 自带的,并不是 python 自带的,cpython 解析器的文件库中从来就没这个文件
        7
    lsj8924   41 天前   ♥ 1
    @wwqgtxx 还是老哥稳啊。居然知道是 pycharm。我看了看路径,你是对的,确实是生成的临时文件。
    https://stackoverflow.com/questions/24266114/pycharm-what-is-python-stubs 说的比较清楚。
        8
    wwqgtxx   41 天前 via iPhone
    @lsj8924 其实文件的开头写了,大概意思就是这个文件是生成的
        9
    chengluyu   41 天前
    @lsj8924

    built-in 的意思就是内建实现,实现细节不会暴露给你,比如 gcc 的一系列 built-in functions。

    CPython 的 dict 也确实是在解释器层面实现的,你可以从 CPython 的源码中翻出来 dict 的 C 实现,但是绝对不会看到 Python 写的 dict 实现。
        10
    PythonAnswer   41 天前
    stub 帮助你跳转进去看看结构的. 这个东西想看细节, 只能看源码+文档.
        12
    ysc3839   40 天前 via Android
    想顺便问一个问题,我自己用 C++ 写了个 Python 的模块,写代码的时候会提示找不到这个模块,有没有办法像这里的 __builtin__.py 一样自己写个声明?
        14
    neoblackcap   40 天前 via iPhone   ♥ 1
    @ysc3839 假如是 3.5 以后的扩展,你可以试试写一个 pyi 文件
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3439 人在线   最高记录 3821   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 18ms · UTC 01:34 · PVG 09:34 · LAX 17:34 · JFK 20:34
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1