如何直接从IDE读取Python源代码

Tho*_*hor 9 python pycharm

我正在学习Python,我想通过阅读源代码深入了解python的工作原理.

我可以手动转到安装Python的目录并查看源代码

在此输入图像描述

我想知道,是否有可能直接从IDE中读取Python源代码,如PyCharm?

我尝试control click使用方法名称,即使它确实将我带到方法定义页面,它也不包含任何实现代码

在此输入图像描述

编辑1

我理解在c中实现了大量的python(确切地说是cpython).无论如何都要读取IDE中的c代码,比如PyCharm?

Arv*_*ind 15

正如你所说,一大块python是用C语言编写的,但这些包含在发行版中.因此,您无法从IDE中读取源代码.这些主要是编译源,这意味着解释器只使用字节码.并非所有函数都是用C语言编写的,其中大部分都是用纯python编写的.

查看源的一种方法是通过终端使用ipython.

In [10]: import string
In [11]: string.lower??
Signature: string.lower(s)
Source:   
def lower(s):
    """lower(s) -> string

Return a copy of the string s converted to lowercase.

"""
return s.lower()
File:      /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/string.py
Type:      function

In [12]: import os

In [13]: os.system??
Docstring:
system(command) -> exit_status

Execute the command (a string) in a subshell.
Type:      builtin_function_or_method
Run Code Online (Sandbox Code Playgroud)

或者,您可以通过使用找到您想要的inspect.getsource().

import inspect
import os
print (inspect.getsource(os))
# You should see the source code here
Run Code Online (Sandbox Code Playgroud)

如上例所示,这对某些内置函数不起作用.

要检查用C编写的内容,您应该使用另一种方法来检查此链接,该链接是python解释器的官方存储库.大多数对象类型都列在该cpython/Objects文件夹中.例如,这是C 中列表对象的实现,对于内置模块,请参考这个.

我相信这就是你想要的.如果您需要帮助,请发表评论.


小智 5

通常PyCharm可以做你想要的,除非Ctrl + Click引导你进入C函数.在这种情况下,您将获得关于函数签名和返回值等的最少信息,就像您在帖子中显示的那样.由于效率原因,内置函数主要用C语言编写,所以如果你想查看C代码,你必须下载CPython源代码并深入研究它.另一种方法是下载PyPy源代码并查看它.尽管如此,您仍然可以使用PyCharm从标准库中用Python编写的模块中读取代码,这对您的学习过程很有帮助.相信我,你会在那里找到优质的代码.