我是靠谱客的博主 激动蜻蜓,最近开发中收集的这篇文章主要介绍Python:自定义/第三方模块导入、包,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

自定义模块并导入

要求:
	模块文件名后缀名必须以 .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:自定义/第三方模块导入、包所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部