python模块知识碎片

  • 缘起
  • 结论
    • import搜索目录为sys.path这个列表
      • 由于是列表所以可以更改, 比如加入github.io文件夹什么的
      • sys.path的改变不跨文件, 可以拿两个py文件自己试下
    • 使用M模块中途M模块被修改, 使用imp.reload(module)进行模块的重新导入
      • 质疑: 是否本就不应该在使用某个模块的中途去修改这个模块
      • 全模块导入时存在模块依赖: 如果M模块自身也import了其他模块M1,M2, 那么这些M1,M2并不会被导入: 详见python全模块reload的坑
    • 避免循环引用
      • 循环引用: 存在a.py与b.py, 此时a.py中写import b同时b.py中写import a
      • 设计观点: “类-接口”模式的重要性, 包括:
        • 类C1,C2,C3…不互相import对方
        • import工作完全由接口实现, 接口I1,I2也要做到相对独立