《Learning Python》 笔记 第 3 章 你应如何运行程序
Notes Learning Python
Lastmod: 2024-08-03 周六 19:22:06

第 3 章 你应如何运行程序

交互式命令行模式

开始一个交互式会话

> python

Windows (cmd)上使用

<CTRL-Z>

UNIX/PowerShell 上使用

<CTRL-D>

结束会话。

Python 3.3 中的新 Windows 选项:PATH 和 启动器

启动器用户可以输入 py 代替 python 并避免一些配置步骤。启动器可以更好的显式掌控运行代码的 Python 版本。

> py -2
> py -3.1

交互式地运行代码

交互式对话会自动打印输入的表达式的结果。

注意在交互模式只能输入 Python 代码,而要输入系统命令。需要使用系统命令则需要 os.system

复合语句时,交互提示符会在第二行及后面由 >>> 变成 ... 并自动缩进。在该模式需要用一个空行结束复合语句。

交互命令行模式一次运行一条语句(多行构成的复合语句是一条语句)。

使用命令行运行文件

python script.py
python script.py > out.txt

Unix 风格可执行脚本:#!

在 Unix 或类 Unix 系统上,可以将 Python 代码编程为可执行程序。一般这样的文件有两个特殊属性:

第一行是特定的 #! 开头,后面跟着 Python 解释器的路径。

往往拥有可执行权限。

注意这里后缀名不需要 .py

一个脚本名为 brain,则在用 chmod 更改权限后,可以在目录下直接使用

$ brain

运行。

Unix env 查找技巧

如果不想 hardcode Python 解释器的位置,则可以

#!/usr/bin/env python
... script ...

点击文件图标

也可以靠点击 Python 文件图标运行 Python 脚本。

这里脚本会运行,但控制台很可能一闪而过。

这时我们可以在脚本结尾增加一行

input()

让脚本运行完暂停等待下一个输入。

另外点击打开,很可能会看不到错误信息。

模块导入和重载

每一个 .py 结尾的文件都会自动称为一个模块。

我们可以用 import 来导入模块。

注意导入模块只会发生一次,导入的文件内容会正常运行。

如果想要多次导入,需要使用 imp 库中的 reload 函数。

模块的宏观视角:属性

我们可以用 import 导入整个模块,之后使用 模块名.属性 的方式使用其中定义的属性。

也可以直接使用 from 模块 import 属性的方式直接加载特定属性,直接使用属性名使用对应属性。

这里两种方式加载都会运行整个模块。

test.py

a = 0
b = 1
c = 2

print(a, b, c)

powershell

>>> from test import a
0 1 2
>>> a
0

可以使用内置的 dir 查看所有可用的变量名

>>> import test
>>> dir(test)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'b', 'c']

一些 __ 开始和结束的变量是 Python 预定义的内置变量名,对解释器来说有特殊意义。

模块和命名空间

每个模块文件时一个变量包(一个命名空间)。

注意 from 可能会使包中定义的变量,覆盖当前的同名变量。

使用注意:import 和 reload

注意需要代码的当前版本运行时需要 reload。reload 的加载不具有传递性。

使用 exec 运行模块文件

exec(open('script.py').read())

注意这种方式相当于直接运行脚本,而并不会加载模块。

IDLE 用户界面、其他 IDE、其他启动选项

该部分内容跳过。

Prev: 《Learning Python》 笔记 第 2 章 Python 如何运行程序
Next: [Vim] usr_11