Python中package的导入语法

在Python中,一个目录被称为一个package。import和from语法除了导入module文件之外,还可以导入package,语法如下:

# import语法
import dir1.dir2.mod

#from语法
from dir1.dir2.mod import x

上面的导入语句中,.用来分割目录和文件名,上面导入的目录结构为dir1/dir2/mod.py。当然,也可以只导入目录:

import dir1

import dir1.dir2

from dir1 import dir2

 

搜寻

在以目录的方式导入的时,必须注意,在sys.path提供的路径中,必须存在一个路径,这个路径拼接上导入的路径,是实际存在的。比如sys.path中存在一个路径为:/home/username/python,那么这个路径拼接上dir1/dir2/mod.py,即/home/username/python/dir1/dir2/mod.py必须实际存在,否则导入失败。

 

__init__.py

要导入一个package,除了要满足上述的搜寻条件,还必须为导入的每一个目录,添加一个名为__init__.py的文件,这个文件可以是空的(实际使用中,大部分都是如此),也可以包含代码,在首次导入(并不是每次执行)这个目录时,会执行__init__.py中的代码。导入的每一目录,最终在Python中都实现成为一个module对象,而在__init__.py中赋值的变量和函数,都成为相应module对象的属性,比如dir2中的__init__.py代码如下:

X = 999

def test():
    print("dir2")

那么导入dir2之后,可以看到:

>>>dir2.X
999

>>>dir2.test()
dir2

 

 

reload

和module文件一样,package目录也支持reload:

reload(dir1)

reload(dir1.dir2)

 

posted @   chaoguo1234  阅读(1284)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2013-07-22 javascript中的this
点击右上角即可分享
微信分享提示