如何直接从IDE读取Python源代码
我目前正在学习Python,我想通过阅读Python的源代码来深入了解Python的工作原理 我可以手动转到安装Python的目录并检查源代码 我想知道,是否可以直接从IDE(如PyCharm)读取Python源代码 我试图如何直接从IDE读取Python源代码,python,pycharm,Python,Pycharm,我目前正在学习Python,我想通过阅读Python的源代码来深入了解Python的工作原理 我可以手动转到安装Python的目录并检查源代码 我想知道,是否可以直接从IDE(如PyCharm)读取Python源代码 我试图控制方法名称上的单击,尽管它确实将我带到了方法定义页面,但它不包含任何实现代码 编辑1 我知道很多python(确切地说是cpython)是用c实现的。在IDE中,比如PyCharm中,是否有阅读c代码的方法?正如您所说,大量python是用c编写的,但是这些都没有包含在
控制方法名称上的单击
,尽管它确实将我带到了方法定义页面,但它不包含任何实现代码
编辑1
我知道很多python(确切地说是cpython)是用c实现的。在IDE中,比如PyCharm中,是否有阅读c代码的方法?正如您所说,大量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()
找到所需内容
与上面的示例一样,这对某些内置函数不起作用
要检查用C编写的内容,应该使用另一种方法,即检查python解释器的官方存储库。大多数对象类型都列在cpython/Objects
文件夹中。例如,这是C语言中的实现,有关模块,请参阅此模块
我相信这就是你想要的。如果您需要帮助,请发表评论。通常,PyCharm会做您想做的事情,除非Ctrl+单击将您引导到C函数。在这种情况下,您将只获得有关函数签名和返回值等的最小信息,就像您在文章中所显示的那样。出于效率考虑,内置代码主要是用C编写的,因此如果您想查看C代码,您必须下载CPython源代码并深入研究它。另一种选择是下载PyPy源代码并查看它。
不过,您可以使用PyCharm从标准库中用Python编写的模块中读取代码,这对您的学习过程很有帮助。相信我,您会在那里找到高质量的代码。我认为Python非常友好,因为它具有高度的封装性。这也正是因为我们并不总是过于关注底层的实现,并提高了我们的效率。因此,您可以通过单击方法名称跳转到方法定义页面,并了解此页面的代码已经足够了。除非你想参与Python语言本身的开发。很多Python内部函数实际上都是用CPL实现的,如果我错了,请纠正我,我猜
str
类的split
方法没有显示代码的原因是split
方法是用c实现的?是的,这是可能的。我认为,如果您想比较一下python的技巧,python文档确实会将您链接到源代码!我将明确指出:)Python的内置类型是用C实现的,因此像str.split()
这样的东西不容易映射到源代码。相反,您看到的是这些对象的PyCharm内部表示,它仅用于帮助自动完成和内联帮助。
import inspect
import os
print (inspect.getsource(os))
# You should see the source code here