·#模块
- py文件就是一个模块
- 模块的分类
- 内置模块
- 第三方模块
- 自定义模块
#模块的作用
#模块的使用
import(导入)
- import 模块名(将模块中的所有内容导入)
- from 模块名 import 功能 (将模块中的某个功能导入)
- from 模块名 import a,b,c (将同一模块中的a、b、c功能导入)
- from 模块名 import * (将模块下的所有功能导入)
- from 模块名 import a as AAA (将模块中的a功能导入并起别名为AAA)
模块导入发生的事情:
1.将模块存储到当前名称空间中
2.以模块的名字命名,并开辟空间
3.通过模块名来使用模块中的功能
模块的导入顺序
- 内存 》内置=》sys.path
模块的两种用法
- 当做普通模块执行
- 被当做脚本执行
——name——
__ name__就是标识模块的名字的一个系统变量。这里分两种情况:假如当前模块是主模块(也就是调用其他模块的模块),那么此模块名字就是__main__,通过if判断这样就可以执行“mian:”后面的主函数内容;假如此模块是被import的,则此模块名字为文件名字(不加后面的.py),通过if判断这样就会跳过“mian:”后面的内容。
if __name__ == " ":
- 当前文件中执行__name__获取的值就是‘main’
- 当前文件被当做模块导入时,__name__获取到的就是当前文件名,当获取的不否时,就会停止
——all——
-
在——init——.py中
__all__=["module_a","module_b"] ##只用 在使用 from package_name import * 时 , 表示import 该package 中的 两个module及 两个module相关的类、方法等。
-
在普通的*.py文件中
__all__=["class_name","function_name"] 在使用 from module_name import * 时,表示import 该module中的__all__中所列出的。
-
注意事项
1.在普通的*.py中, 使用__all__ 时,可以使用__all__列出的 类、函数、变量等,不使用__all__时会使用module中的所有不以下划线开头的成员。 2.__all__只能影响到 from import * 这种import 方式, 对于from import 的 import 方式没有影响。 3.__all__ 的数据类型:List or Tuple (不确定, 待验证其他)
import和from对比(推荐使用from)
- import全部导入
- from指定功能导入
- 两者都支持as
- from会将之前定义同名的覆盖
- from一行可以导入多个功能,也可导入全部功能
- import建议一行导入一个模块