# 解释器
按照 Python 语法编写的代码,必须交给一种称为 Python interpreter 的软件才能运行,中文名为 Python 解释器。
为什么使用 Python 解释器,而不使用其它软件来运行 Python 代码?这是为了跨平台。
- Java 编程语言最初的卖点是,跨平台。用户编写了一个 Java 程序之后,不需要修改源代码,就可以移植到不同平台,交给该平台的 JVM 虚拟机运行。
- Python 编程语言也支持跨平台。用户编写了一个 Python 脚本文件之后,不需要修改源代码,就可以移植到不同平台,交给该平台的 Python 解释器运行。
Python 解释器,主要有两种方式来运行 Python 代码:
- 可以用 Python 解释器打开一个交互式终端,手动输入一行 Python 代码,按下回车键,就会立即执行。
- 可以将多行 Python 代码保存为一个文件,然后用 Python 解释器执行。
- 由于 Python 属于脚本语言,因此通常将 Python 的代码文件,称为脚本文件。
- Python 脚本文件的扩展名通常为 .py 。
# 分类
存在多种 Python 解释器:
- CPython
- 基于 C 语言实现,是 Python 官方默认提供的一款解释器,用户量最大。
- 执行 Python 脚本时,会先把它解释成 C 语言代码,再编译成可执行文件。
- Jython
- 基于 Java 实现。
- 执行 Python 脚本时,会先把它解释成 Java 字节码文件,再编译成可执行文件。
- PyPy
- 基于 rPython 实现。
- 采用 JIT 技术进行动态编译,使代码的执行速度大幅提高。
- IPython
- 提供了功能更多的 shell ,常用作 Jupyter Notebook 的内核。
用户可执行以下代码,查看当前 Python 解释器的类型:
>>> import platform
>>> platform.python_implementation()
'CPython'
# 安装
在 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 <filePath> [arg]...
- 第一个字段是 Python 解释器的名称,比如:
python3.8
、/usr/bin/python3.8
- 第二个字段是 Python 脚本的路径,可以使用相对路径或绝对路径,比如:
1.py
、test/1.py
- 如果文件路径中包含空格,就要加上双引号强调为字符串。比如:
python "test/Hello world.py"
- 第一个字段是 Python 解释器的名称,比如:
# 相关概念
Jupyter Notebook
- :一个 Web 服务器,提供了 Web IDE 。
- 2014 年,IPython 解释器的 Notebook 项目改名为 Jupyter Notebook ,成为一个独立项目,扩展支持几十种编程语言。
- 可以创建、编辑 Notebook 文档:
- 支持多种编程语言的交互式编程。
- 支持显示像 MarkDown 的富文本,方便绘制数学公式、编写教程文档。
- 文档保存为 JSON 格式,扩展名为 .ipynb 。
-
- :一个开源的 Python 语言、R 语言发行版,擅长数学运算、数据分析。
- 于 2012 年发布。
- Anaconda 的安装包有 1GB 体积,因为内置了 CPython 解释器、conda、pip、Jupyter Notebook 等工具。
- Anaconda 提供了一个 GUI 界面,称为 Anaconda Navigator 。
conda
- :Anaconda 内置的一个包管理工具,可安装 Python 等多种语言的软件包。
- 只能安装 https://anaconda.org (opens new window) 平台上的包,不如 https://pypi.org (opens new window) 平台上的包多,因此有的 Python 包只能用 pip 安装。
- conda 原生支持创建虚拟环境,而 pip 不支持。