简言
CSDN 的朋友们大家好呀,这个源码分析系列会持续更新哦,因为我将在 CSDN 里和大家一起探索 Python 的源代码,深入了解 Python 的底层实现和逻辑原理,因为我也是初探,所以有什么想法和问题可以在评论区讨论,我都会及时回复的呀,那接下来就一起去看看 Python 的源码吧。
各种目录
在我们搭建好 Python 的基本环境以后,就已经在自己的物理机上具备了管理 Python 包的 pip 以及 Python 的标准库和 IDLE 开发环境,在 Python 的安装目录下可以看到很多的文件夹以及其他文件,如下图:
用于展示和分析的是 Python 3.8.2,上面的图就是【Python38】目录下的所有文件夹与文件,版本不同文件也不同,那现在就来看看这些文件夹与文件吧。
【DLLs】文件夹
通过分析,之前也说过,在 Python 中,使用 .dll 文件中包含的功能来实现打开对话框,有助于避免代码重用和节省内存空间以及提高内存效率,所以这个文件夹里面放的是 Python 的一些【拓展库】和【数字签名】文件以及很多【开发者】文件,当然,你还可以在里面找到 Python 用到的 .ico 图标文件,如下图:
这是我们在使用 Python 的时候,在 txt 文件里面写 Python 代码和平时创建 .py 文件后在图形界面可以看到的 .py 图标以及 .pyc 和 .pyd 文件图标的来源。
【Doc】文件夹
Doc 就译为【文件】,里面的文件也只有一个,如图:
咦?只有一个,那这是什么文件勒?.chm 文件是 Microsoft 推出的基于 HTML 文件特性的帮助文件,不能用 txt 形式打开,那我们可以用 CHM 阅读器 正常打开,打开后如下图:
这是在安装 Python 的时候,选择的 Documentation,就是之前说过的【安装 Python 说明文件】那个选项框,如果勾上了,就会有这个文件夹和文件吧,里面提到的内容大概是一些很详细的 Python 使用方法和一些语法说明,还有标准库的一些说明,在底部窗口还附有其官网的地址,而且会在该文件看到相应的版本新特性和其他的一些数据,可以说是一个非常详细的【记录】文件。
【etc】文件夹
进入文件夹后,只有一个子文件夹,如图:
根据分析,我是搭好了 Python 的 Jupyter Notebook 了的,这是一个交互式的笔记本,可以在浏览器里面交互编程,以前叫 IPython notebook,能支持 40 多种编程语言的运行,进到最子级目录下后,看到了一个 .json 文件,双击运行后弹出了 Visual Studio,如图:
那【etc】这个文件夹是用来置放一些功能性的插件的吧。
【include】文件夹
这个文件夹里面全都是以 .h 为扩展名的文件,这种文件一般作为 .cpp 文件也就是用 C++ 写的功能实现的接口或是头文件存在,用户可通过编写 C 程序来扩展 Python 的功能实现,是 Python 具有可扩展性的证明,当然在这里,在 Python 中,.h 文件显然是被作为了功能实现的扩展文件存在,而没有把功能实现用 .h 文件和 .cpp 文件分开放置在 Python 源码里面,虽然这样也可以,缺点在于文件的管理不方便,反之可以节约开发者和用户的时间,提高开发效率,进入文件夹后,能看到有两个子文件夹【cpython】和【internal】,里面都是 .h 文件,这就是为什么说 Python 的解释器是用 C 实现的吧。
【Lib】文件夹
可以看到,在该文件夹里有很多 .pyc 和 .py 为扩展名的文件,我们知道,.pyc 文件是由相应的 .py 文件经过第一次解释器执行后保存下来放在每个文件夹目录的第一个文件夹【__.pycache__】里面,这里我多加了个点,因为编辑器的原因,别介意哈,如果源 .py 文件有改动,Python 就会重新编译一份覆盖源 .pyc 文件,采用 .pyc 文件可以大大节省重复调用 Python 模块的运行时间,提高运行效率,这里不多说了。
如果你仔细分析该文件夹,就会发现里面有 Python 的内置模块,就是标准库的 turtle 库,turtle.py 文件,由此可见,这个文件夹里面存放着 Python 的标准库模块以及相应的 .pyc 文件,具体每个模块的相互作用和功能实现之后慢慢剖析。
【libs】文件夹
这个文件夹里面只有以 .lib 为扩展名的文件,如图:
之前说过,.lib 文件在 Python 中作为一个一次性链接,可以看到 python38.lib 和 python3.lib 文件,它们在 Python 中参与 python38.dll 和 python.exe 文件生成后,就可以不用了,而且用记事本打开是乱码,这些 .lib 文件在使用后就被闲置在该【libs】文件夹里了。
【Scripts】文件夹
Scripts 可译为脚本,这个文件夹里面存放着 Python 的如 pip 这样的包管理器的可执行文件,如果你还为 Python 安装了更多的工具,那么它们的直接可执行源文件放在这里,如图:
【share】文件夹
share 可译为共享,可以看到如下文件夹:
对,就两个,【jupyter】里面的文件如图:
【man】里面的文件如图:
其中 .map 文件是由其 LINK 工具生成的一种文本文件,其中包含有被连接的程序的某些信息,如程序中的组信息和公共符号信息这些。
【tcl】文件夹
里面放有 Python 实现的 tcl 功能等的文件,也是 Python 实现 tkinter 模块的扩展,如图:
【Tools】文件夹
这个很常见,就是工具类的文件夹,里面有如 demo 等的文件如图:
进入【demo】,可见:
打开其中的 redemo.py 文件看了下,如图:
里面有个 ReDemo 类,里面有很多的参数和方法,这里无脑使用【IPython】Run 一下,结果如图:
下方表情包高能!
emm,那这次就分享到这里,太长了太复杂了谁也不爱看,下次就和 C 友们一起深入源代码,看看 Python 源码里面各种模块的方法和功能实现,以加深对 Python 的了解和熟悉,不见不散咯。
日志
ps:2020-06-01,今天是儿童节呀,祝小朋友们节日快乐,也希望大人们消除疲劳,拥抱初心,希望大家都可以开心快乐的生活着。
ps:2020-06-02,更改标题。
ps:2020-06-07,重新发一次
感谢 CSDN,感谢 C 友们的支持