你应如何运行程序

交互式命令模式

开始一个交互式会话

  • 一般是在操作系统命令行下输入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的工作机制可能模块覆盖掉当前正在使用的变量