Python菜鸟编程第八课之模块包
程序员文章站
2022-07-09 23:37:39
...
Python菜鸟编程第八课之模块包
1.导入包
包:包是通过使用’.模块名’来组织Python模块名称空间的方式。具体而言,包就是一个包含’_init_.py’文件的文件夹。
目的:用文件夹将文件/模块组织起来。创建包的目的不是为了运行,而是为了被导入使用。包的本质依然还是模块。
tips:Python3中,即使包中没有_init_.py,也可以使用;Python2中,包中没有_init_.py,肯定报错;
使用时,import导入,导入带点的,点的最左边一点是包名。import导入文件时,产生名称空间的名字源于文件,import包,名称空间同样源于文件(包),_init_.py,导入包的本质就是导入它。
demo:
- 新建一个test文件夹
- 在test文件夹中新建三个文件夹,分别起名为:api、cmd、db
- 在test文件夹中新建一个.py文件,命名为:_init_.py
- 在api、cmd、db这三个文件夹中各新建一个_init_.py文件
- 在api中新建两个.py文件命名为:student.py和version.py
- 在cmd中新建一个.py文件命名为:manage.py
- 在cmd中新建一个.py文件命名为:moudle.py
student.py中输入:
#student.py
def get():
print('from student.py')
version.py中输入:
#version.py
def craet_resource(conf):
print('from version.py',conf)
moudle.py中输入:
#moudle.py
def register_models(engine):
print('from models.py',engine)
manage.py中输入:
#manage.py
def main():
print('from manage.py')
在test文件夹下的_init_.py文件下输入:
from . import cmd
from . import db
在api文件夹下的_init_.py文件夹下输入:
from . import student
from . import version
在cmd文件夹下的_init_.py文件夹下输入:
from . import manage
在db文件夹下的_init_.py文件夹下输入:
from . import moudle
#开始测试
demo1:
在test.py文件下输入:
import test.db.moudle
test.db.moudle.register_models('Mysql')
from test.cmd import manage
manage.main()
from test.cmd.manage import main
main()
运行结果:
from models.py Mysql
from manage.py
from manage.py
demo2:
在test.py文件下输入:
import test
test.api.student.get()
test.api.version.craet_resource('school')
test.cmd.manage.main()
test.db.moudle. register_models('test')
运行结果:
from student.py
from version.py school
from manage.py
from models.py test
导入包,其实导入的是包里的_init_.py文件。
demo3:
清空api文件夹下面的_init_.py,然后输入:
a=6688
def func():
print('api-->__init__.py')
__all__=['student','version','a']
在test.py文件中输入:
from test.api import *
student.get()
version.craet_resource('school')
print(a)
运行结果:
from student.py
from version.py school
6688
demo4:
在version.py中输入:
from ..cmd import manage#相对导入
manage.main()
在test.py文件中输入:
只能在顶层去调用,而不能在子模块中运行。
from test.api import version#绝对导入
version.manage.main()
运行结果:
from manage.py
from manage.py
博主QQ:1031748759,欢迎批评指正!
下一篇: 黑帽SEO技术快速排名灰色行业