有一个困惑:比如看 reversed 方法的源码里面的实现都是 pass,为什么会这样?如何才能看到源码呢?

2022-06-25 11:22:51 +08:00
 jenrey

google 了一下,有人说因为底层是 C 实现,所以 pycharm 为了更好的体验帮我们隐藏了。 在此感谢每一位回复的前辈~

2435 次点击
所在节点    Python
3 条回复
westoy
2022-06-25 11:50:01 +08:00
这和 python 基本没系啊,主要是 C 层面的

这种 CPython 层面的东西, 你得先去 include 下面找头文件的定义

比如这个

https://github.com/python/cpython/blob/main/Include/listobject.h

找到 PyList_Reverse

然后就定位到 https://github.com/python/cpython/blob/main/Objects/listobject.c#L2606

从里面再跳到上面的 static void reverse_slice(PyObject **lo, PyObject **hi)
chenxytw
2022-06-25 18:19:58 +08:00
不是 PyCharm 为了更好的体验隐藏了源码;是 PyCharm 为了更好的体验生成了 pyi 文件。
因为 Python 大部分 builtin 都是 CPython 实现。标准库里面性能敏感的组件也是 CPython 实现。

builtin 基本可以在这个文件找到 https://github.com/python/cpython/blob/main/Python/bltinmodule.c
jenrey
2022-06-28 09:22:21 +08:00
@chenxytw @westoy 感谢前辈的回复,再一次深入的理解了 python 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/862085

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX