做心灵的主人,努力把心态调整好,不必要挑剔生活的不如意,得是一种短暂,失是一种境界。
总结:
- 看清楚你当前是处在哪个环境里;global,dir\locals很重要;
包
包,特殊的模块;包是一个有层次的文件目录结构,它定义了由n个模块或n个子包组成的python应用程序执行环境。
Python模块支持目录吗?
包是一个包含_init.py 文件的目录,该目录下一定得有这个_init.py文件和其它模块或子包。
子包: 假如子目录中也有 init.py 那么它就是这个包的子包了。
实验:项目中新建一个目录m,使用下面的代码;
import m
print(m)
print(type(m))
print(dir(m)) # 没有__file__
竟然可以导入目录m,目录也是文件,所以可以导入,不过问题是,目录模块怎么写入代码?
为了解决这个问题,Python要求在目录下建立一个特殊文件 _init_.py ,在其中写入代码;
Python中,目录可以作为模块,这就是包,不过代码需要写在该目录下 init.py 中;
子模块
包目录下的py文件、子目录都是其子模块;
m
|-- __init__.py
|-- m1.py
|-- m2
|-- __init__.py
|-- m21
|-- __init__.py
|-- m22.py
如上建立子模块目录和文件,所有的py文件中就写一句话 print(name)
# 注意观察已经加载的模块、当前名词空间的名词
#import m
#import m.m1
#from m import m1
#from m.m2 import m21
import m.m2.m21
print('-'*30)
print(dir())
print('-'*30)
import sys
print(sorted(filter(lambda x:x.startswith('m'), sys.modules.keys())))
删除 init.py 试一试,可以发现删除并不影响导入,但是这不是良好的习惯,请保留 init.py 文件
模块和包的总结
包能够更好的组织模块,尤其是大的模块,其代码行数很多,可以把它拆分成很多子模块,便于使用某些功能就加载相应的子模块!
网友评论