概述
自定义模块并导入
要求:
模块文件名后缀名必须以 .py 结尾
模块文件名必须是合法的标识符
避免名称和内建模块名冲突
导入方式:
import 语句
from import 语句
from import * 语句
import 语句查找模块文件的路径顺序
import 模块名 # 去哪儿找这个 "模块名.py"
1. 搜索内建模块
2. 搜索程序运行时的路径(当前路径)
3. sys.path 提供的路径
sys.path 是一个列表,内部存入的都是模块的搜索路径
>>> import sys
>>> print(sys.path)
安装 第三方模块或包
pip3 install 模块名
让import语句能找到自己的模块
1. 把自己的写的模块放到sys.path中的某个文件夹内
2. 修改sys.path列表,在内部添加一个文件夹的字符串
(注:此做法只对当前程序起作用)
如:
import sys
sys.path.append('/home/tarena')
模块化编程优点:
1. 有利于多人合作开发
2. 使代码更加易于维护
3. 提高代码的复用率
4. 有利于解决变量名冲突问题(模块内的全局变量的作用域
为模块内全局)
**模块的加载过程**
在模块导入时,模块内的所有语句都会执行
如果一个模块已经导入,则再次导入时不会重新执行模块内的语句
模块被导入和执行的过程
1. 先搜索相关路径找到 模块名.py
2. 判断是否有此模块对应的pyc文件.如果.pyc文件比.py
文件新则直接加载.pyc文件
3. 如果.pyc文件比.py文件旧,则用模块名.py 生成 .pyc
文件,并加载执行
模块的编译
编译 解释执行
mymod.py -----> mymod.pyc --------> python3
模块的属性
__doc__ 属性
用于绑定模块的文档字符串
模块的文档字符串用于help(模块) 函数提供帮助信息
__file__属性
用于绑定模块的文件路径名
__name__属性
__name__属性用来记录模块自身的名字
作用:
1. 记录模块名
2. 用来判断是否为主模块
说明:
当模块作为主模块(也就是第一个运行的模块)运行时,
__name__属性 绑定 '__main__'
当此模块不是主模块时,__name__属性 绑定模块名
模块的__all__列表
作用:
当用from xxx import *语句导入时,只导入__all__
列表内的属性
说明:
__all__列表是一个用来存放可导出属性的字符串列表
模块的隐藏属性
模块中以'_' 开头的属性,在用 from xxx import * 导
入时将不被导入,通常称这些属性为隐藏属性
随机模块 random
作用:
用于模拟或生成随机输出的模块
randint randint(1,10)# 产生 1 到 10 的一个整数型随机数
random random()# 产生 0 到 1 之间的随机浮点数
randrange randrange(1,100,2)# 生成从1到100的间隔为2的随机整数
sample sample(list,k)从list序列中,随机获取k个元素,生成一个新序列。sample不改变原来序列
seed 改变随机数生成器的种子
setstate setstate(state)传入一个先前利用getstate方法获得的状态对象,使得生成器恢复到这个状态
shuffle 将序列a中的元素顺序打乱
triangular triangular(low, high, mode)返回一个low <= N <=high的三角形分布的随机数。参数mode指明众数出现位置。
uniform uniform(1.1,5.4)# 产生1.1 到5.4之间的随机浮点数,区间可以不是整数
包(模块包) package
包是将模块以文件夹的组织形式进行分组管理的方法
作用:
将一系列模块进行分类管理,有利于防止命名冲突
可以在需要时加载一个或部分模块,而不是全部模块
示例:
mypack/
__init__.py
menu.py
games/
__init__.py
contra.py
supermario.py
tanks.py
office/
__init__.py
excel.py
word.py
包的导入
同模块的导入规则
import 包名 [as 包别名]
import 包名.模块名 [as 模块新名]
import 包名.子包名.模块名 [as 模块新名]
from 包名 import 模块名 [as 模块新名]
from 包名.子包名 import 模块名 [as 模块新名]
from 包名.子包名.模块名 import 属性名 [as 属性新名]
from 包名 import *
from 包名.模块名 import *
…
__init__.py 文件
__init__.py 是常规包内必须存在的文件
__init__.py 会在包加载时被自动调用
作用:
编写此包的内容
在包内填写包的文档字符串
在__init__.py 文件内可以加载此包所依懒的一些其它模块
init.py 内的 __all__列表
作用:
用来记录此包中有哪儿些包或模块需要导入
当用from 包 import *语句导入模块时,只查找__all__中所有的模块或子包
说明:
__all__列表 只在from xxx import * 起作用
import 语句搜索包的路径的顺序:
1. 搜索程序运行时的路径(当前工作目录)
2. sys.path提供的路径
包的相对导入
包的相对导入是指包内模块的相互导入
语法:
from 相对路径包或模块 import 属性或模块名
或
from 相对路径包或模块 import *
相对路径:
在from import语句和 from imoprt *语句中可以使
用相对路径
. 代表当前目录
.. 代表上一级目录
... 代表上二级目录
.... 以此类推
注: 相对导入时不能超出包的外部
最后
以上就是激动蜻蜓为你收集整理的Python:自定义/第三方模块导入、包的全部内容,希望文章能够帮你解决Python:自定义/第三方模块导入、包所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复