Python解释器
Python是一种解释型语言,我们写好的Python源代码要交给解释器执行。
当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。
由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。
Python 解释器是执行 Python 代码的核心程序,它负责将人类可读的 Python 源代码翻译成计算机能理解的机器指令,从而让代码真正“运行”起来。
与 C、C++ 等编译型语言不同(需先通过编译器将代码一次性转换为机器码再执行),Python 是解释型语言,其解释器采用“逐行解释、逐行执行”的方式运行代码,无需提前编译成独立的可执行文件,这也是 Python 代码轻便、跨平台的重要原因之一。
常见的 Python 解释器
由于 Python 语言规范是公开的,因此存在多种不同实现的解释器,以适应不同场景需求。其中最常用的包括:
1.CPython
这是 Python 官方的、使用 C 语言实现的解释器,也是最广泛使用的版本(我们平时说的“安装 Python”,默认就是安装 CPython)。它完全遵循 Python 语言规范,支持所有标准库,且是其他解释器的“参考实现”。
启动方式:安装后通过命令行输入 python 或 python3 即可进入交互式解释器(REPL),也可直接运行 .py 脚本文件(如 python script.py)。
2.IPython
基于 CPython 的增强型交互式解释器,提供更友好的交互体验:支持语法高亮、自动补全、命令历史记录、多行代码编辑等功能,更适合调试和学习。
启动方式:安装后输入 ipython 即可,常用于 Jupyter Notebook 等交互式环境。
3.PyPy 一款追求“速度”的解释器,采用 JIT(即时编译) 技术(运行时动态将频繁执行的代码编译为机器码),执行速度通常比 CPython 快数倍甚至数十倍,尤其适合对性能要求高的场景(如大规模循环、数据处理)。但兼容性略逊于 CPython,部分依赖 C 扩展的库可能无法直接使用。
4.Jython 运行在 Java 虚拟机(JVM)上的解释器,能将 Python 代码编译为 Java 字节码,因此可直接调用 Java 类库,实现 Python 与 Java 代码的无缝交互,适合需要整合 Java 生态的场景。
5.IronPython 针对 .NET 框架的解释器,能将 Python 代码编译为 .NET 字节码,可与 C#、VB.NET 等 .NET 语言交互,适用于 Windows 平台下的 .NET 开发场景。
选择哪种解释器,取决于具体需求:日常开发、学习或依赖标准库/第三方 C 扩展时,优先用 CPython;需要交互式调试时用 IPython;追求性能时尝试 PyPy;需与 Java/.NET 生态交互时,可考虑 Jython/IronPython。
本质上,所有解释器都遵循 Python 语法规范,因此同一份代码(不涉及特定解释器的扩展)在不同解释器中通常能正常运行。
CPython
当我们从Python官方网站下载并安装好Python 3.x后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。
IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。
使用Python解释器
Python 解释器在Linux上通常安装于 /usr/local/bin/python 路径下;
在Windows上默认的安装路径为:C:\Program Files\Python38 (38表示当前安装的Python版本是3.8.x)
# 在安装有Python的机器终端中输入python,进入pyhon交互环境
PS C:\Users\zj> python
Python 3.8.8 (tags/v3.8.8:024d805, Feb 19 2021, 13:18:16) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("hello world!")
hello world!
>>> exit()
# exit()退出交互环境
解释器的运行环境
默认情况下,Python 源码文件的编码是 UTF-8。这种编码支持世界上大多数语言的字符,可以用于字符串字面值、变量、函数名及注释 —— 尽管标准库只用常规的 ASCII 字符作为变量名或函数名,可移植代码都应遵守此约定。要正确显示这些字符,编辑器必须能识别 UTF-8 编码,而且必须使用支持文件中所有字符的字体。
如果不使用默认编码,则要声明文件的编码,文件的第一行要写成特殊注释。句法如下:
# -*- coding: utf-8 -*-
其中,encoding 可以是 Python 支持的任意一种 codecs。
比如,声明使用 Windows-1252 编码,源码文件要写成:
# -*- coding: cp1252 -*-
第一行 的规则也有一种例外情况,源码以 UNIX "shebang" 行 开头。此时,编码声明要写在文件的第二行。例如:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-