自定义模块与包与绝对导包 笔记

自定义模块与包

在 Python 中,模块(Module)就是一个个扩展名为.py 的源程序文件,所以我们之前创建的每一个python源程序文件都可以理解是模块。包(Package)就是一个个保存了模块和__init__.py文件的特殊目录。一个完整的Python项目通常都是基于模块和包的方式来组织代码。基于包目录来组织项目代码的方式,一般我们称之为模块化开发。

初始化模块

python中,一个目录下如果存在初始化模块__init__.py 则会被python系统默认为包,而初始化模块__init__.py的作用有2个:

1.可以编写一些导包时需要初始化执行的代码,这些代码会在包被导入时自动执行

2.可以把包下面一些模块导入初始化模块__init__.py中,是实现简写效果

注意:__init__.py 也可以是没有代码的文件,让python可以识别当前目录是一个包而已

目录/
 ├── xxx.py  # 一把包里面可以至少有0到多个模块文件
 ├── __init__.py

导包路径

当需要在python文件中导入一个外部模块,python解析器对模块位置的搜索顺序是:

1.当前的工作目录,python文件执行时所在的工作目录,通过pwd

2.PYTHONPATH(环境变量)中的每一个目录

3.pyhton默认的安装目录

上面的三个目录,也叫起始导包路径,可以通过sys.path进行查看

因此如果希望有些路径下的模块能被python导包,则需要把当前路径加入到导包路径的搜索列表sys.path

import sys
print(sys.path)
​
sys.path.insert(0 ,"文件路径")

绝对导包

也叫绝对路径导包,从起始导包路径开始逐层目录编写路径导入模块或包,这样的导包路径写法,就是绝对导包。常见写法如下:

# 写法1:
import 包名
import 包名.包名
#用法1,只能使用在__init__.py 初始化模块中出现的变量信息(这里的变量包括任意的普通变量/函数/类/对象)
​
#写法2:可以使用到模块下的__init__.py初始化模块和当前指定模块的内容
import 模块名
import 包名.模块名
import 包名.包名.模块名
​
#用法2:
模块名.变量
包名.模块名.变量
包名.包名.模块名.变量
​
#写法3:相当于导入了每层包的__init__.py初始化模块与指定模块文件
from 包名. import 模块名
from 包名.包名 import 模块名
​
#用法3:
模块名.变量 
​
#写法4:相当于导入了每层包的__init__.py 初始化模块与指定模块下的指定变量,但是指定模块的代码还是会被执行,同样__init__.py的代码会被执行,但是无法在当前文件中被调用
from 包名.模块名 import 变量
​
#用法4:
变量

开发中常用的绝对路径导包写法如下:

import 模块名

from 包名 import 模块名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值