Bootstrap

03-Python的运行方式

《Python 教程》总结
持续更新中,学习交流请加作者微信: python-baby

脚本和模块

脚本(Scripts)

在计算机术语中,脚本是指一个包含逻辑顺序的文本文件,我们可以运行脚本来完成特定任务。这些逻辑顺序通常用脚本语言表示,脚本语言是一种编程语言,允许我们操作、定制或自动化任务。

脚本语言通常在运行时(runtime)解释,而不是在编译时。所以脚本通常由某种解释器运行,解释器的工作就是按顺序执行脚本中的代码。

Python 就是一门解释型语言。一般来讲,Python 代码被称为脚本(或者在更复杂的应用程序中称为入口点脚本)。

模块(Modules)

另一方面,包含 Python 代码的文件(例如 A.py)可以被另一个 Python 文件(例如 B.py)导入和使用,这种文件(A.py)就被称为模块。

模块和脚本的主要区别在于:

  • 模块:存储可导入(Importable)的代码。定义了某些内容但不执行特定操作的代码,例如函数或类的定义。
  • 脚本:存储可执行(Executable)的代码。例如函数的调用、循环、条件判断等。

命令行运行

在 Python 编程中,我们可以以纯文本文件来编写 Python 程序。需要注意的是,包含 Python 代码的文件用 .py 做后缀名。

运行 Python 脚本

首先我们创建一个 Python 脚本 hello.py

print("Hello, World!")
使用 Python 命令

以 Windows 为例,我们需要打开 Windows 终端(win + R 然后输入 cmd),然后敲入下面的命令:

# 相对路径
>>> python .\hello.py
Hello, World!

>>> py .\hello.py
Hello, World!

# 绝对路径
>>> python D:\python\hello.py
Hello, World!

>>> py D:\python\hello.py
Hello, World!

在 Windows 中,我们还可以使用 py 命令,这个命令会触发控制台应用程序的 py.exe 启动器。在某些 Linux 发行版中,可能需要使用 python3 命令。

重定向输出

终端或 shell 运行 Python 脚本还有一个功能就是:可以使用重定向将 Python 执行结果输出到某个文件中,方便我们将结果保存下来并对其进行分析。

>>> python D:\python\hello.py > D:\python\output.txt

在上面的命令中,> 表示将输出(即 Python 脚本的执行结果 “Hello, World!”)重定向到 output.txt 文件中,而不是标准输出到屏幕中。如果 output.txt 不存在,系统会自动创建它;如果存在:> 会覆盖,>> 会追加。

直接使用脚本的文件名

以 Windows 为例,我们可以直接使用脚本的文件名来执行脚本。

# 绝对路径
>>> D:\python\hello.py

# 相对路径
>>> .\hello.py

如果是 Linux,需要先给脚本赋可执行权限,否则很有可能报【没有权限】的错误。

chmod +x hello.py

赋权之后,在脚本中添加一个 shebang 行:

#!/usr/bin/env python3

print("Hello, World!")

添加 shebang 行之后运行:

[root@localhost ~]# ./hello.py

使用 -m 选项运行 Python 模块

语法:

python -m <module-name>

-m 会在 Python 的模块搜索路径、sys.path 中搜索模块名称并运行对应内容。

以 Linux 为例:

[root@localhost ~]# python -m hello
Hello, World!

注意 <module-name> 是模块的名称,而不是文件名(即不包含 .py 后缀)。

交互式运行

Python 是一门解释型语言,执行 Python 脚本的时候解释器会按顺序把 Python 代码解释成机器语言。

什么是 Python 解释器

解释器是在你的程序和计算机硬件之间工作的一层软件,能够使你的代码运行。常见实现包括:

  • C:如 CPython,是最常用的一种实现。
  • Python 本身:如 PyPy,它是一个带有即时(JIT)编译器的快速实现。
  • Java:如 Jython,可以利用 Java 生态。

无论使用哪种解释器,我们编写的代码都将在上面运行。Python 解释器可以在两种不同的模式下运行代码:

  1. 脚本或程序
  2. 交互式或 REPL(Read-Eval-Print Loop)

交互式运行(REPL)

Python 的 REPL 运行代码。以 Windows 为例,启动 REPL,会看到标准主提示符由三个右尖括号 >>> 组成:

>>> for i in range(0, 10):
...     print(i)

唯一的缺点是,当关闭会话时,代码将消失。与脚本模式相比,脚本是持久的。

从 Python 代码中运行

import 语句

当我们从另一个模块、脚本或交互式会话导入模块时,Python 会加载其中的内容供以后访问和使用。

>>> import hello
Hello, World!

多次执行 import 语句时,每个会话只会运行一次模块中的代码。

importlib

importlib 是 Python 标准库中的一个模块,可以通过 importlib 以编程的方式导入模块。

>>> import importlib
>>> importlib.import_module("hello")

要重新加载模块并再次运行其中的代码,可以使用 reload() 函数:

>>> import importlib
>>> importlib.reload(hello)

exec() 函数

还可以使用内置 exec() 函数来执行:

>>> with open("hello.py") as hello:
...     exec(hello.read())

IDE / 代码编辑器运行

为了开发大型和复杂的应用程序,我们应该使用集成开发环境(IDE)或高级文本编辑器。这些程序中的大多数都有一些选项,允许我们在环境本身内部运行程序。

;