# 解释器
- Python 是解释型语言,它的代码不需要编译,可以直接被 Python 解释器执行。
- 安装 Python 解释器之后就可以执行 Python 脚本,也可以打开一个终端进行交互式编程。
# 分类
Python 解释器有多种:
- CPython
- 基于 C 语言实现,使用最广泛。
- 执行 Python 脚本时,会先把它解释成 C 语言代码,再编译成可执行文件。
- Jython
- 基于 Java 实现。
- 执行 Python 脚本时,会先把它解释成 Java 字节码文件,再编译成可执行文件。
- PyPy
- 基于 rPython 实现。
- 采用 JIT 技术进行动态编译(不是解释),使代码的执行速度大幅提高。
- IPython
- 提供了功能更多的 shell ,常用作 Jupyter Notebook 的内核。
# 安装
在 Window 上,要去官网 (opens new window)下载 Python 的安装包,运行它开始安装。
- 安装时勾选“自动配置 PATH”。
- 安装完成后,打开 Windows 的 CMD 窗口,执行
python
命令即可启动解释器。
在 CentOS 上,可以用 yum 安装已编译的 Python ,缺点是只有旧版本的 Python 包:
yum install python36 python36-pip ln -s /usr/bin/python3.6 /usr/bin/python3 ln -s /usr/bin/pip3.6 /usr/bin/pip3
在 Ubuntu 上,可以用 apt 安装已编译的 Python :
apt install -y --no-install-recommends python3.8-dev python3.8-distutils
- 如果嫌默认仓库提供的 Python 版本太旧,可添加一个由个人维护的仓库 ppa:deadsnakes (opens new window) ,它提供了最新几个版本的 Python 软件包:
apt install -y software-properties-common # 安装 add-apt-repository 工具 add-apt-repository -y ppa:deadsnakes/ppa # 添加 apt 仓库
- 如果嫌默认仓库提供的 Python 版本太旧,可添加一个由个人维护的仓库 ppa:deadsnakes (opens new window) ,它提供了最新几个版本的 Python 软件包:
可以从官网 (opens new window)下载任意版本的源代码包,然后编译安装,缺点是比较慢:
py_version=3.9.9 # 指定 Python 版本 yum install -y gcc make openssl-devel zlib zlib-devel libffi-devel # 安装编译工具及依赖库 curl -O https://www.python.org/ftp/python/${py_version}/Python-${py_version}.tgz tar -zxvf Python-${py_version}.tgz cd Python-${py_version} ./configure --prefix=/usr/local/python/Python-${py_version} --with-ensurepip=install make make install cd .. rm -rf Python-${py_version} Python-${py_version}.tgz ln -s /usr/local/python/Python-${py_version}/bin/* /usr/local/bin/
- 这里安装之后,执行
python3.8
或python3
即可启动解释器。(不过执行python
启动的是 Python2 的解释器) - 在 Ubuntu 上,需要用
apt install -y gcc make openssl zlib1g-dev libffi-dev libssl-dev libbz2-dev libreadline-dev libsqlite3-dev liblzma-dev
安装编译工具及依赖库。
- 这里安装之后,执行
或者运行 Docker 镜像:
docker run -it --rm python:3.10.5-slim-buster python
# 命令
python # 打开 Python 解释器的终端
-q # 打开解释器终端时,不显示帮助信息
-v # 在启动、退出解释器时,显示详细信息
-u # 输出 stdout 和 stderr 时不缓冲
# 以下命令不会打开 Python 解释器终端
-h # 显示帮助信息
-V # 查看 Python 解释器的版本
-c <command> # 执行一条 Python 语句
<xx.py> [args] # 执行一个 Python 脚本,可以指定绝对路径或相对路径
-m <module> # 以脚本的方式执行一个 Python 模块
# 交互式编程
在系统终端执行 python
命令,会打开 Python 解释器的终端,进行交互式编程。
例:
[root@CentOS ~]# python3
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 1 + \
... 2
3
>>> print("Hello!"
...)
Hello!
- 打开解释器终端时,开头会显示几行行帮助信息。
Python 3.7.3
表示该解释器的版本号。Mar 25 2019, 22:22:05
表示该版本的发布时间。64 bit (AMD64)
表示该解释器是 64 位版本。on win32
表示操作系统是 Windows 。
- 三个大于号
>>>
是终端的主提示符,表示等待用户输入一行语句。 - 三个小数点
...
是终端的从属提示符,在输入换行时显示,表示等待用户输入多行语句。 - 输入反斜杠
\
再按回车就可以换行输入。 - 使用括号
()
、[]
、{}
时,在输入后半边括号之前,可以按回车换行输入。 - 每条语句执行后的返回值会自动显示在终端上。
# 执行 Python 脚本
可以用 Python 解释器执行 Python 脚本,命令如下:
python <filePath> [arg]...
- 第一个字段是 Python 解释器的名称,比如:
python3.8
、/usr/bin/python3.8
- 第二个字段是 Python 脚本的路径,可以使用相对路径或绝对路径,比如:
1.py
、test/1.py
- 如果文件路径中包含空格,就要加上双引号强调为字符串。比如:
python "test/Hello world.py"
- 第一个字段是 Python 解释器的名称,比如:
当 Python 解释器执行脚本时,会在每个导入的模块的目录下生成一个
__pycache__
文件夹,用于缓存该模块预编译生成的字节码文件(扩展名为.pyc 或.pyo)。- 当下一次执行脚本时,Python 解释器会检查被导入的模块是否有改动,没有的话就使用之前的
__pycache__
,从而更快地执行。 - .pyd 文件是用其它语言生成的扩展模块,可被 Python 导入。
- 当下一次执行脚本时,Python 解释器会检查被导入的模块是否有改动,没有的话就使用之前的