17611538698
webmaster@21cto.com

Python 底层原理

编程语言 0 129 2024-09-29 12:33:57

图片

本文将以初学者的方式介绍动态类型、强类型以及 Python 解释器的内部工作原理。

Python是一种动态、强类型、解释型语言。这些术语乍一听很抽象、令人生畏,但它们很容易理解,这也是为什么这种语言“用户友好”的原因之一。让我们分解并简化它们。

动态语言


计算机编程语言分为两大阵营:动态语言与静态语言。


静态语言包括 C、C++、Java 和Go。静态语言的一个定义特征是变量类型必须在源代码中定义。一旦开发人员将变量定义为某种数据类型(例如,如果 cat 变量是字符串),它就永远是字符串(rrrrr)。一旦变量在编译时定义,就不能在运行时更改。


对于动态语言,解释器会在运行时推断变量类型(稍后会详细介绍解释器和运行时)。这极大地改变了我们能做什么和不能做什么。动态语言包括 Python、JavaScript、Ruby、PHP。


这意味着 Python 变量赋值可以简单到这样

cat = "Mooney"


Python 的运行时将读取Mooney并分配适当的内存,与 C++ 相比,无需事先告知Mooney是一个字符串,即可打印操作。

cat = "Mooney"
print(cat)
cat = "Seth"
print(cat)
cat = ["Seth", "Mooney"]
print(cat)


上述代码返回以下结果

Mooney
Seth
[Seth, Mooney]


强类型

这直接指代内存以及它如何可以或不可以改变。虽然 Python 值的值可以改变,但它们不能以意外的方式改变,否则会引发错误。以下是最佳解释方式:

整数 + 整数 = 成功
字符串 + 字符串 = 成功
整数 + 字符串 = 错误


您可以更改变量类型,但需要显式转换。

Python 解释器

上面的代码执行,都是Python 的运行时在起作用。

Python 的运行时是指用于编写和运行 Python 代码的工具。运行时是负责安装和运行应用程序代码和依赖项的软件堆栈。运行时包括命令行、集成开发环境 (IDE)(如VS Code或 Jupyter Notebook)以及 Web 服务器(如Django和 Flask)。运行时包括CPython ——Python 的默认字节码解释器。CPython 的主要目的是读取(大多数)人类编写的代码并将其转换为机器可读的代码。

CPython 读取并解释 Python 源代码并逐行执行(因此是解释型语言)。在执行之前,CPython 将 Python 源代码编译为字节码。Python虚拟机 (PVM)执行代码。由于 CPython 处理 Python 代码执行,因此它还管理 Python 内存管理。这包括内存分配和垃圾收集。

CPython 提供了一个标准库,其中包含用于 I/O、网络和数据操作等任务的模块和包。

Python 内部提供工具可以让开发者进行灵活且富有表现力的编程。这使得它适合非常多的擅长任务,比如脚本编写、Web 开发与数据分析等情形。

作者:洛逸

评论