第 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、其他启动选项
该部分内容跳过。
Next: [Vim] usr_11