你应如何运行程序
交互式命令模式
开始一个交互式会话
- 一般是在操作系统命令行下输入
python
,且不带任何参数
系统路径
- 如果没有设置系统的PATH环境变量来包括Python的安装路径,可能需要机器上Python可执行文件的完整路径来代替
python
运行的位置:代码位置
不要输入的内容:提示符和注释
交互式的运行代码
为什么要使用交互式命令行模式
实验
测试
使用注意:交互命令行模式
- 只能输入Python命令。只能在Python交互式命令下输入Python代码,而不要输入系统命令
- print语句仅在文件中才是必需的。在交互解释器中自动打印表达式结果,不需要输入完整的打印语句
- 留意复合语句下的提示符变化
- 在交互命令模式中,用一个空行结束复合语句
- 交互命令行模式一次运行一条语句
系统命令行和文件
- “模块”被另一个文件所导入的文件
- “脚本”一个程序的主文件
使用命令行运行文件
不同的命令行使用方式
使用注意:命令行和文件
- 注意Windows和IDLE上的自动扩展名
- 在系统命令行模式下使用文件扩展名和目录路径,但是在导入时别使用它们
- 在文件中使用print语句
UNIX风格可执行脚本:#!
UNIX脚本基础
- 它们第一行是特定的,往往以字符#!开始,其后紧跟着机器Python解释器的路径
- 它们往往都拥有可执行的权限
- 文件顶端特定的一行告诉系统Python解释器保存在哪里
#!/usr/local/bin/python
print('...')
UNIX env查找技巧
- 可以使用env避免在脚本文件中硬编码Python解释器的路径
#!/usr/bin/env python
... script goes here ...
模块导入和重载
导入和重载的基础知识
- 每一个以扩展名.py结尾的Python源代码都是一个模块
- 导入操作本质就是载入另一个文件,并给予读取那个文件内容的权限
- 一个模块的内容通过其属性被外部世界使用
- 导入操作运行文件中的代码
- 导入的模块会有缓存,不会每次导入都执行
模块的宏观视角:属性
- 模块往往就是变量名的包,即命名空间,包中的变量名称为属性
- 无论使用的是import还是from..import,模块文件的语句都会执行
- 可以使用dir获取模块内部全部变量名
使用注意:import和reload
- reload是不可传递的,重载一个模块的话只会重载该模块,而不能重载该模块导入的任何模块
使用exec运行模块文件
- 每次调用exec时,它都重新运行文件,就好像我们把文件粘贴到了调用exec的地方,因此exec不要在文件修改后进行模块重载,它忽略了常规的模块导入逻辑
- exec的工作机制可能模块覆盖掉当前正在使用的变量