《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 解释器可以在两种不同的模式下运行代码:
- 脚本或程序
- 交互式或 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)或高级文本编辑器。这些程序中的大多数都有一些选项,允许我们在环境本身内部运行程序。