python模块和包的导入

时间:2022-01-26 22:14:48

模块

  • 一个包含python代码的.py文件。
  • 模块的使用
    • import module
    • import module_name
    • import module_name as 别名
    • from module_name import func_name, class_name
    • from module_name import *
  • if __name == 'main' 的使用
    • 可以有效避免模块代码被导入的时候被动执行的问题
    • 建议所有程序的入口都以此代码为入口

模块的搜索路径和存储

  • 系统默认的模块搜索路径
    • import sys
    • sys.path 属性可以获取路径列表
  • 添加搜索路径
    • sys.path.append(dir)
  • 模块的加载顺序
    1. 搜索内存中已经加载好的模块
    2. 搜索python的内置模块
    3. 搜索sys.path路径

  • 自定义包的结构

    /---包
    /---/---__init.py__ 包的标志文件
    /---/---模块1
    /---/---模块2
    /---/---子包(子文件夹)
    /---/---/---__init.py__ 包的标志文件
    /---/---/---子包模块1
    /---/---/---子包模块1
  • 包的使用
    • import package_name
      • 默认对__init__.py中的内容进行导入
    • from package_name import *
      • 导入__init__.py中的模块,函数和类
    • import package_name.module_name
    • from package_name import module1, module2, ...
  •  __init__.py中如果设置了__all__的值,那么则按照__all__指定的子包或者模块进行导入
  •  __all__ = ['module1', 'module2',..] 

关于包和模块的使用,根据import后面的内容。

  • import的是package,使用时: package_name.module_name
  • import的是module,使用时: module_name.func_name; module_name.class_name
  • import的是package.module, 使用时: package_name.module_name.func_name
  • import的是func, class,使用时:func_name; class_name