自定义模块
-
什么是模块 :本质就是.py文件,是封装语句的最小单位。
-
自定义模块:实际上就是已定义.py文件 ,其中可以包含:函数定义,可执行语句,函数定义,统称为模块成员。
-
模块的运行方式
① 脚本方式:直接用解释器执行,或者IDE(Pycharm)中运行
② 模块方式:被其他的模块导入。此时作用是为导入它的模块提供资源、(变量,函数,类的定义等)
-
Python 提供了一种可以判断自定义模块属于开发阶段还是使用阶段
__name__
属性的使用__name__ #以脚本方式运行时 __name__为固定的字符串 (__main__) #以导入方式运行时 __name__就是本模块的名字
-
系统导入模块的路径:
- 内存中:如果之前成功导入过某个模块,直接使用已经存在的模块
- 内置路径下:安装路径在:lib
- sys.path : 是一个路径的列表
- PYTHONPATH :import时 寻找模块的路径
可以使用sys.path.append(path) 加入模块的路径
__file__
#当前文件的绝对路径方法
os.path.dirname() : 可以获取某个路径的父路径 ,通常用于获取当前模块的相对路径
sys.path.append(os.path.dirname(__file__)+r'/path') #使用相对路径 来添加模块的位置
-
导入模块的多种方式:
-
import xxx :导入一个模块的所有成员
-
import xxxa,xxxb 一次性导入多个模块的所有成员
-
from xxx import xxx : 从某个模块中 导入某个成员
-
from xxx import *
form xxx import * 和 Import xxx的区别:
第二种方式在使用其中成员时,必须使用模块名作为前缀
第一种方式在使用其中成员时,直接使用成员名即可 。
import mymodel2 mymodel2.fun1() from mymodel2 import * fun1()
如何解决名称冲突的问题?:
- 改用Import xxx 这种方式进行导入。
- 使用别名解决冲突
使用别名: alias --> as
- 避免名称冲突
- 简化书写
-
from xxx import * 控制成员被导入
`__all__` 是一个列表 用于表示本模块可以被外界使用的成员
__all__ = ['AGE','age2'] #限制只能使用的变量 ,只对form import * 时有效
AUTHOR = 'PANDA'
AGE = 18
age2 = 0
相对导入
相对导入
针对某个项目
次模块 作为从外界引用的内容
from .. import xxx