赞
踩
使用模块可以避免函数名和变量名重名引发冲突。那么,如果模块名重复应该怎么办呢?在Python中,提出了包(Packaage)的概念。包括每一个分层次的目录结构,它将一组功能相近的模块组织在一个目录下。这样,既可以起到规范代码的作用,又能避免模块名重名引起冲突。
在实际开项目开发时,通常情况下,会创建多个包用于存放不同类的文件。例如,开发一个网站时,可以创建如同所示的包结构:
说明: 在图中先创建一个shop的项目,然后在该项目下创建了admin、home、templaates 3个包和一个manaage.py的文件,最后在每个包中,又创建了相应的模块。
下面将分别介绍如何创建和使用包。
创建包实际上就是创建一个文件夹,并且在文件夹中创建一个名称为“init.py”的Python文件。在 init.py 文件中,可以不编写任何代码,也可以编写一些代码。在__init__.py文件中所编写代码,在导入包时会自动执行。
说明: init.py文件是一个模块文件,模块名为对应的包名。例如,在settings包中创建__init__.py文件,对应的模块名为settings
例如,在D盘根目录下,创建一个名称为settings的包,可以按照一下步骤进行。
【1】计算机的D盘根目录下,创建一个名称为settings的文件夹。
【2】在IDLE中,创建一个名称为“init.py”的文件,保存在E:\settings文件夹下,并且在该文件中不写任何内容,然后再返回到资源管理器中,效果如图所示:
至此,名称为settings的包就创建完毕了,之后就可以在该包中创建所需的模块了。
创建包以后,就可以在包中创建相应的模块,然后使用import语句从包中加载模块。从包中加载模块通常有以下3中情况:
【1】通过“import + 完整包名 + 模块名”形式加载指定的模块。
“import + 完整包名 + 模块名”形式是指:假如有一个名称为settings的包,在该包下有一个名称为size的模块,那么要导入size模块,可以使用下面的代码:
import settings.size
通过该方式导入模块后,使用时需要完整的名称。例如,在已经创建的settings包中创建一个名称为size的模块,并在模块中定义两个变量,代码如下:
width = 800 # 宽度
height = 600 # 高度
这时,通过;“import + 完整包名 + 模块名”形式导入size模块后,在调用width和height变量时,就需要在变量前加入“settings.size.”前缀。对应代码如下:
import settings.size # 导入settings包下的size模块
if __name__ == "__main__":
print("宽度:",settings.size.width)
print("高度:",settings.size.height)
在执行了上面的代码后,将显示以下内容:
宽度:800
高度:600
【2】通过“from + 完整包名 + import + 模块名”形式加载指定模块。
通过“from + 完整包名 + import + 模块名”形式是指:假如有一个名称为settings的包,在该包下有一个名称为size的模块,那么要导入size模块,可以使用下面的代码:
from settings import size
通过该方式导入模块后,使用时不需要带包前缀,但是需要带模块名。例如,想通过“from + 完整包名 + import + 模块名”形式导入上面已经创建的size模块,并且调用width和height变量,可以通过下面的代码实现:
from settings import size # 导入settings包下的size模块
if __name__ == "__main__":
print("宽度:",size.width)
print("高度:",size.height)
在执行了上面的代码后,将显示以下内容:
宽度:800
高度:600
【3】通过“from + 完整包名 + 模块名 + import + 定义名”形式指定模块。
“from + 完整包名 + 模块名 + import + 定义名”形式是指:假如有一个名称为settings的包,在该包下有一个名称为size的模块,那么要导入size模块中的width和height变量,可以使用下面代码:
from settings.size import width,heigt
通过该方式导入模块、变量或类后,在使用时直接使用函数、变量或类即可。例如。想通过“from + 完整包名 + 模块名 + import + 定义名”形式导入上面已经创建的size模块的width和height变量,并输出,就可以通过下面的代码实现:
# 导入settings包下的size模块中width和height变量
from settings.size import width,heigt
if __name__ == "__main__":
print("宽度:",width) # 输出宽度
print("高度:",height) # 输出高度
在执行了上面的代码后,将显示以下内容:
宽度:800
高度:600
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。