python中的包
使用模块可以避免函数名和变量名引发的冲突,那么如果模块名重复怎么办?在python中,提出了包的概念(package)的概念,包是一个分层次的目录结构,它将一组功能相近的模块组织在一个目录下,这样既起到了规范代码的作用,又能避免模块重名引发的冲突。
说明:包简单的理’解就是[文件夹],只不过是在该文件夹下必须存在的一个名称为“__init__.py”的文件。
一、python程序的包结构
实际项目开发过程中,会创建多个包用于存放不同类型的文件。例如,开发一个网站时可以创建。如图所示的包结构
说明:先创建了一个名为shop的项目,然后再该包下面又创建了admin、home、templates 3个包,和一个 manage的文件,最后又在每个包中,又创建了相应的模块
1、创建和使用包
创建包实际上就是创建一个文件夹,并且在该文件夹下创建一个名为__init__.py的python文件,在这个文件中,可以不编写任何代码,也可以编写一些python代码,在这个文件中写的代码,在导入包时会自动执行。
备注:__init__.py文件是一个模块文件,模块名为对应的包名,例如,在setings包中创建的__init__.py文件,对应的模块名称就叫seting。
2、使用包
创建包以后,就可以在包中间创建相应的模块,在使用import语句从包中加载模块,从包中加载模块通常有3种模式。
(1)通过import+完整的包名+模块名形式加载指定模块,例如有一个名称为seting的包,该包下面有个名称为size的模块,要导入模块,可以使用一下代码。
import seting.size
通过该方式导入模块后,在需要使用完整的名称,例如在size模块下有2个变量
width = 800, height = 600
这时,在通过import+完整的包名+模块名形式导入size模块后,在调用width和height变量时,就需要在变量名前加入“setting.size”前缀。代码如下
settings.size.width
settings.size.height