1. 模块:指自我包含并且有组织的代码片段, 一个文件被看作是一个独立模块
  2. 路径搜索: 在文件系统‘预定义区域’(就是搜索路径)中查找<modulename>.py文件
  3. 默认搜索路径两种方法: a)PYTHONPATH环境变量 b)sys.path(由每个独立路径组成的list) 可进行修改
  4. 查看当前导入的模块和源sys.modules, 它返回的是一个字典, 模块名为键, 物理地址为值
  5. 命名空间:名称(标识符)到对象的映射集合 向名称空间添加名称的操作过程涉及绑定标识符到指定对象的操作(以及给该对象的引用计数+1)
  6. 改变一个名字的绑定叫做重新绑定, 删除一个名字叫做解除绑定
  7. 执行期间有两或三个活动的名称空间:局部名称空间(不断变化)、全局名称空间、内建名称空间
    解释器加载顺序:内建、全局、局部 内建名称空间:由__builtins__模块中的名字构成 全局名称空间:在模块开始执行后变为活动名称空间
  8. __builtin__模块:内建函数、异常及其他属性, 正常情况下 __builtins__包含__builtin__的所有名字
  9. 无限制的命名空间: 你可以在任何需要放置数据的地方获得一个命名空间(如用句点属性标识符给函数添加属性)
  10. 模块导入风格: 按顺序为标准库, 第三方模块, 应用程序自定义模块
  11. 导入模块的作用域取决于导入位置(顶外侧:全局, 函数内:局部)
  12. 模块导入特性:
    • 载入时会执行, 所以尽可能把模块定义和函数放在模块的顶层,第一次导入模块会执行模块最高级的代码(即没有缩进的)
    • 无论导入多少次, 一个模块只被加载一次
    • 可以把名字导入到当前的名称空间中(导入特定名字时)
    • 从模块导入名字后名字只会是局部名称空间的一部分(局部绑定), 解决:import整个模块并给出完整的标识符名称
    • 可以对包含python模块的zip格式文件进行导入
    • 新特性:允许把一个已经安装的模块作为脚本执行
  13. 要限制使用import *(可能会”污染”当前名称空间), 用标准分组机制:import (x ,y ,z)
  14. as(2.6正式为关键字)在导入的同时指定局部绑定名称: import abcdefghhhhh as ahh
  15. 新特性模块:__future__(直接import不行, 必须指定新特性名)
  16. 警告框架组成: API(通过调用warning模块),警告异常类的集合(Warning继承自Exception), 警告过滤器(也可以启动python时使用-W), 警告默认输出到sys.stderr

  17. 模块内建函数:实现导入模块的函数__import__('<modulename>') ​ 全局/局部名称空间的字典:globals()/locals() (局部:函数执行时定义的所有名字) (全局:函数可访问的全局名字) ​ 重新导入一个已经导入的模块:reload(module) 调用reload()时注意:
    • 必须是成功全部导入
    • 参数是模块自身而不是模块的字符串
  18. 包:一个有层次的文件目录结构, 定义了一个由模块和子包组成的Python应用程序执行环境, 也使用句点属性标识符来访问 python2.7亲测:如果包中没有__init__.py, 在导入时不会被找到
  19. __init__.py:初始化模块, from-import在导入子包时会用到(可以是空文件), 如果没有, 将会导致一个ImportWarning信息 ​ 其中的__all__变量包含执行import *语句时应该导入的模块的名字
  20. 绝对导入(通过python路径访问)/相对导入(句点开头)
  21. 阻止属性导入:在不想导入的属性名前加一个_(下划线),但如果全部导入或者显式地导入带_的, 就会无效
  22. 在一些新系统(Unix区分, win不区分)上使不区分大小写的进行导入工作:需要指定环境变量PYTHONCASEOK
  23. 导入常用辅助模块: 提供底层功能imp, 查找用modulefinder, 打包用pkgutil(*.pkg文件), 指定路径site