我正在学习Python,我希望通过阅读源代码深入了解python的工作原理。
我可以手动转到安装Python的目录并查看源代码
我想知道,是否可以直接从IDE中读取Python源代码,例如PyCharm?
我尝试了control click
方法名称,即使它确实将我带到了方法定义页面,它也没有包含任何实现代码
修改1
我理解在c中实现了大量的python(确切地说是cpython)。无论如何都要读取IDE中的c代码,例如PyCharm?
答案 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语言本身的开发。