python-模块包

包导入基础

import dir1.dir2.mod
from dir1.dir2.mod import x
dir1.dir2.mod这些路径对应于机器上目录层次的路径,通过这个路径可以获得文件mod.py

包和搜索路径

使用sys.path来查看包的搜索路径
路径设置在环境变量PYTHONPATH中

init.py包文件

包导入语句的路径中每个目录内必须有 init.py这个文件,否则包导入失效
例如:mod.py文件的路径是
dir0\dir1\dir2\mod.py
那么使用import倒入mod文件:
import dir1.dir2.mod

必须遵守的规则:
dir1和dir2中都必须有一个__init__.py文件
dir0是容器,不需要__init__.py文件
dir0,必须在模块搜索路径的sys.path列表中,dir0必须是自动搜索路径中的一部分(主目录,标准库,或者 site.packages中的目录)

包初始化文件

包的初始化:
python在首次导入某个目录时,会自动执行该目录下__init__.py文件中所有程序代码,因此,init.py文件很自然地成为了放置包内文件所需要初始化代码的场所,例如:包可以通过初始化文件来创建所需要的数据文件,链接数据库等
模块命名空间的初始化:
在包导入模型中,脚本中的目录路径在导入后会变成真实的嵌套对象路径,例如,导入表达式dir1.dir2运行后,会返回一个模块对象
例如:
mod.py的路径位于 dir1\dir2中
#dir1_init_.py
print(“dir1 init”)
x=1
#dir2_init_.py
print(“dir2 init”)
y=2
#dir1\dir2\mod.py
print(“in mod.py”)
z=3

使用import dir1.dir2.mod,导入时,第一次导入时,会执行

dir1 init
dir2 init
in mod.py

使用from dir1.dir2 import mod时,第一次导入时,也会执行dir1和dir2中的__init__.py中的表达式语句
使用import dir1.dir2.mod时,在mod.py中,会得到一个名为dir1.dir2的对象,dir1.dir2是一个class为module的对象,有如下属性

['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'mod', 'y']
from语句 vs import语句

使用import,在程序中使用路径,而使用from,可以避免在程序中使用路径
import导入所有的library
from import只导入特定的library

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值