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

问题描述 投票:9回答:3

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

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

enter image description here

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

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

enter image description here

编辑1

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

python pycharm
3个回答
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模块,请参考这个。

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


5
投票

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


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.