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

时间:2017-12-20 07:13:18

标签: python pycharm

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

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

enter image description here

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

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

enter image description here

修改1

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

3 个答案:

答案 0 :(得分:13)

正如你所说,一大块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

或者,您可以使用inspect.getsource()找到所需内容。

import inspect
import os
print (inspect.getsource(os))
# You should see the source code here

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

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

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

答案 1 :(得分:5)

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

答案 2 :(得分:1)

我认为Python非常友好,因为它的封装程度很高。也正是因为我们并不总是太关注底层实施,并提高我们的效率。因此,您可以通过单击方法名称跳转到方法定义页面,并了解此页面的代码是否足够。除非您想参与Python语言本身的开发。