模块 Module
模块是一个包含有一系列数据,函数,类等组成的程序组
模块是一个文件,模块文件名通常以“.py”结尾
模块的作用:
让一些相关的数据,函数,类等有逻辑的组织在一起,使逻辑结构更加清晰
模块中的变量,函数,类等可提供给其他模块或程序使用
模块的分类:
内置模块(builtins)在解析器的内部可以直接使用
标准库模块,安装python时已安装就可以使用
第三方模块(通常为开源),需要自己安装
用户自己编写的模块(可以作为其他人的第三方模块)
模块的导入 import
import语句
语法:
import 模块名1[as 模块新名1 ], 模块名2[as 模块新名2], …………
示例:
import math # 导入数学模块
import sys, os # 导入sys和os模块
import copy as cp
作用:
将一个模块整体导入到当前模块中
属性用法:
模块名.属性名
help(obj)可以查看模块的文档字符串
from import语句
语法:
from 模块名 import 模块属性名[as 属性名新名1] ,
模块属性名2[as 属性新名2]
作用:
将某模块的一个或者多个属性导入到当前模块的作用域
from import * 语句
语法:
form 模块名 import *
作用:
将某模块的所有属性导入到当前的模块
dir 函数
dir ([对象]) 返回一个字符串列表
作用:
如果没有参数调用,则返回当前作用域内所有变量的列表
如果给定一个对象作为参数,则返回这个对象的所在变量(属性)列表
对于一个模块,返回这个模块的全部变量
对于一个类对象,返回类对象的所有变量,并递归基类的所有变量
对于其他对象,返回所有变量、类变量和基类变量
系统模块 sys
此模块都是运行时系统的信息
自定义模块
import 语句搜索模块的路径顺序
搜索程序运行时路径(当前路径)
sys.path 提供的路径
搜索内置模块
模块的加载过程
在模块导入时,模块所有语句会执行
如果一个模块已经导入,则再次导入时不会陈红新执行模块内的语句
模块的重新加载
import mymod
import imp
imp.reload(mymod) # 在运行时重新加载mymod模块
模块被导入和执行的过程
先搜索相关路径找 模块(.py文件)
判断是否有比模块对应 的.py文件,如果.pyc比.py文件新
则直接加载.pyc文件
否则用模块.py文件生成.pyc并加载执行
模块的文档字符串
模块内第一个没有赋值给任何变量的字符串为文档字符串
模块的的_ _doc_ _属性
![](https://i-blog.csdnimg.cn/blog_migrate/63b5b2d47d857859d39cc6193a092200.png)
模块的_ _all _ _列表
模块中的_ _all _ _列表是一个用来存放可导出属性的字符串列表
作用:
限定当用from XXX import * 语句导入时,只导入__all__列表的属性
模块中的隐藏属性
模块中以“_"开头的属性,在from xxx import * 导入时不被导入,通常这些属性为隐藏属性
随机模块 random
作用:
用于模拟或生成随机输出的模块
包 (模块包) package
包是将模块以文件夹的组织形式进行分组管理的方法
作用:
将一系列模块进行分类管理,有利于访问命名冲突
可以在需要时加载一个或部分模块,而不是全部模块
_ _ init_ _.py文件
_ _ init_ _.py是常规包必须存在的文件
_ _ init_ _.py会在包加载时被自动调用
作用:
编写此包的内容
在内部填写包的文档字符串
包的导入语法:
# 同模块的导入规则相同
import 包名[as 包别名]
import 包名.模块名 [as 模块新名]