day18 包
目录
day18 包今日内容
昨日内容回顾
今日内容详细包包的定义:具有 包的目的是用来管理模块。 包的本质就是一个模块。模块可以导入,包也可以导入。 在Python 2中,使用import导入一个包,如果包中没有 在Python 3中,使用import导入一个包,如果包中没有 在导入时只要使用点操作,就是在导入包。导入时, 我们在项目的根目录 ----bake |----api | |----policy.py | |----versions.py | |----__init__.py |----cmd | |----manage.py | |----__init__.py |----db | |----models.py | |----__init__.py |----file_tree.py |----test.py |----__init__.py 创建完成后是这个样子的。需要注意的是, 在文件 name = 'alex' print('api_policy') 在文件 name = 'meet' print('api_versions') 在文件 neme = 'taibai' print('cmd_manage') 也就是这个样子: 导入包可以使用相对路径和绝对路径两种方法: 导入包的方式最基本的结构为: import 包.包.模块 比如,我们想在 import bake.api.versions print(bake.api.versions.name) 输出的结果为: api_versions meet 我们成功导入了包,也成功调用了包中的变量。但是每次使用的时候都要使用长长的绝对路径,十分麻烦。这时,我们可以给导入的包取一个别名,来方便调用: import bake.api.policy as p print(p.name) 输出的结果为: api_policy alex 我们也可以通过from方法来导入包中指定的函数或变量,而不是将包整体导入。其基本结构为: from 包.包.模块 import 函数,变量,* 比如,我们要导入模块 from bake.cmd.manage import name print(name) 输出的结果为: cmd_manage taibai 我们说过,包的本质也是模块,但是如果我们直接导入包,却发现无法直接调用其中的模块中的变量: from bake import api print(api.policy.name) 程序报错,报错信息为: Traceback (most recent call last): File "C:/Users/Sure/PyProject/bake/test.py",line 21,in <module> print(api.policy.name) AttributeError: module 'bake.api' has no attribute 'policy' 这是因为我们没有指明api包所需要导入的文件。这时,我们就要在api包下的 from .policy import * 这样,程序就可以顺利运行啦。 如果我们直接在test文件中导入bake中的所有模块中的函数和变量,就可以这样: from bake import * print(name) 输出的结果为: api_policy api_versions cmd_manage taibai 因为变量名都命名为 总结一下,当程序运行到
模块与包的关系为:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |