阅读《Python 核心编程》第二版和第三版,总结和归纳了掐中比较有趣的内容和知识点,以备后续整理
Anki
知识库。
1. Python 基础知识
属于了解 Python 语言之后,需要知道的知识点!
1.1 介绍了解
- [1] 如何理解 Python 是动态强类型解释型语言呢?
动态类型语言是一种在运行期间才去确定数据类型的语言,与静态类型相反。而强类型和弱类型主要是站在变量类型处理的角度进行分类的,强类型是指当你定义一个变量是某个类型,如果不经过代码显式转换过,它就永远都是这个类型。解释型语言就是把源代码翻译一句执行一句直至运行结束,而编译型语言则是将源代码全部编译成二进制代码的可运行程序,然后再运行这个程序。
- [2] 如何理解 Python 解释性和(字节)编译性呢?
Python
是一种解释性语言,这就意味着开发过程中没有编译的这个环节,所以纯粹的解析型语言会比编译型语言运行要慢。但是类似于 Java
语言,Python
实际上是字节编译的,将其结果生成一种近似机器语言的中间形式,当源文件被解释器加载或者显式地进行字节码编译的时候会被编译成字节码,这样不仅能够改善 Python
的性能,还同时使它保持了解释型语言的优点。
- [3] 是否了解 Python 的其他实现呢?
标准版本的 Python
是用 C
来编译的,又被称为 Cpython
。除此之外,还有一些其他的 Python
实现,比如 Jython(Java)
、IronPython(.NET)
等。这样,我们就可以根据需要的不同类型的扩展,选择不同类型的 Python
实现,来完成我们的需求。
我们都知道 CPython
有个局限就是,每个 Python
函数调用都会产生一个 C
函数调用(栈帧),这意味着同时产生的函数调用是有限制的,因此 Python
难以实现用户级的线程库和复杂递归应用,一旦超越这个限制程序就会崩溃。Python
有一个变种实现(Stackless
- 独立的分支)突破了这个限制,一个 C
栈帧可以拥有任意数量的 Python
栈帧,这样你就能够拥有几乎无穷的函数调用,并能支持巨大数量的线程。另一个名为 Greenlets
的项目也支持微线程,它是一个标准的 C
扩展,因此不需要对标准 Python
解释器做任何修改。
- [4] 代码在开头使用 env 是为什么呢?好处又在哪里呢?
使用的是类 Unix
平台运行代码的话,通常会看到 #!/usr/bin/env python
这样的代码。这是因为执行代码需要找到 Python 解释器的路径,而许多 Unix
系统有一个命令叫 env
,位于 /bin
或 /usr/bin
中,它会帮你在系统搜索路径中找到 python
解释器。这样就可以,单独直接运行这个脚本了,而无需指定 Python
解释器的路径,即 $ script.py
。
- [5] 给新手同学的一些建议
看看标准库里的一些文件,比如 string.py
,这会帮助你适应阅读 Python
脚本。
1.2 础数据结构
2. Python 核心知识
这部分就是相对而言,比较深入的了解 Python 语音的相关特性和功能!
2.1 语言特性
- [1] Python 的内存管理是怎么处理的呢?
在 Python
中,由于内存管理是由 Python
解释器负责的
- [2] Python 的垃圾回收又是怎么一回事呢?
3. Python 应用相关
这部分涉及网络、图形化、Web 相关!
待续 ……