# 解释器

  • 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 命令即可启动解释器。
  • 在 Linux 上,可以用 yum 或 apt 直接安装老版本的 Python :

    yum install python36 python36-pip
    ln -s /usr/bin/python3.6 /usr/bin/python3
    ln -s /usr/bin/pip3.6 /usr/bin/pip3
    
    • 或者从官网 (opens new window)下载任意版本的源代码包再编译安装(比较慢):
      py_version=3.9.9      # 指定 Python 版本
      yum install -y gcc make openssl-devel zlib zlib-devel libffi-devel    # 安装编译环境
      wget 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.8python3 即可启动解释器。(不过执行 python 启动的是 Python2 的解释器)
    • 在 Ubuntu 上,需要用 apt install -y gcc make openssl libssl-dev zlib1g zlib1g-dev libffi-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 解释器的终端,进行交互式编程。

例:

[[email protected] ~]# 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.pytest/1.py
    • 如果文件路径中包含空格,就要加上双引号强调为字符串。比如:python "test/Hello world.py"
  • 当 Python 解释器运行脚本时,会在每个导入的模块的目录下生成一个 __pycache__ 文件夹,用于缓存该模块预编译生成的字节码文件(扩展名为.pyc 或.pyo)。

    • 当下一次运行脚本时,Python 解释器会检查被导入的模块是否有改动,没有的话就使用之前的 __pycache__ ,从而更快地运行。
    • .pyd 文件是用其它语言生成的扩展模块,可被 Python 导入。