Python学习---模块和包

模块:

  一个模块就是一个包含Python代码的文件,一个文件就是一个模块

为什么使用模块

  1.现在程序开发文件比较大,都放在一个文件中维护不方便,拆分成多个文件方便维护和管理

  2.模块可以增加代码的重用率

  3.模块可以当做命名空间

如何定义自己的模块

  模块本身就是一个文件,所有py代码都可以在文件中直接书写,不过我们开发公用模块时,最好在模块中书写一下内容

    变量    模块中的属性

    函数    单独的功能

    类      相似功能组合

    模块测试代码  临时使用,被导入时不会执行

测试代码:

  测试代码经常在开发模块时用于测试模块的功能,但是测试代码仅在开发和测试时使用,被当做模块导入时不希望测试代码运行,需要使用name特殊变量来操作

  if __name__  == '__main__':
   #测试代码区域(仅在吧当前文件直接运行时才会执行测试代码,当作模块导入时则不会执行)

  __name__  在直接运行当前文件时,结果为__main__
    
  __name__  被当作模块导入文件时,结果为 模块名称


模块的导入方式
  1.import 模块名
  2.import 模块名 as 别名
  3.from 模块  import 函数/类
  4.from 模块 import *
模块的存放
  import sys
  sys.path #获取当前搜索路径的列表
  sys.path.append(自定义的路径) #将自定义的路径添加到列表中
模块的加载顺序
  导入模块操作的步骤:
    1.检测内存中是否已经加载过当前模块,如果加载过,直接使用加载的模块
    2.如果内存中没有加载过当前模块,则搜索Python的内置模块
    3.如果当前内置模块中没有改模块,根据搜索路径查找并且加载模块

包:
  包就是文件夹,用于存放文件也就是模块,包中也可以存放包
包的结构:
|---- __init__.py 包的标志文件
|---- 模块1
|---- 模块2
|---- 子包(文件夹)
|-----|----__init__.py
|---- |----子模块1
|---- |----子模块2


包的导入和使用
  1.import 包.模块
  2.import 包.模块 as 别名
  3.from 包.模块 import 函数或者类或者属性
  4.from 包.模块 import *
包的相互调用问题
  如果在当前模块中需要调用其他模块或者包的内容时,可以直接使用import导入对应的包和模块你,就可以加载进来使用,import会搜索包和模块对应的搜索路径


注:
  __init__.py 文件中添加内容
    给inint文件添加内容 就相当于给包添加内容  包可以被导入使用

  __all__特殊变量的用户
   1. 在__init__.py文件中,如果没有__all__变量,那么使用from包import * 仅导入__init__.py中定义的方法和类及其他内容
   2. 在init.py文件中,如果定义all变量,那么使用from包import * 则会导入指定的所有模块,而忽略init.py文件中的信息
  __all__ = [‘模块’,‘子包’....] #必须是列表



原文地址:https://www.cnblogs.com/yuxiang-qiwa/p/7894343.html