当前位置:   article > 正文

Python中的包_python 包

python 包


一、前言

  使用模块可以避免函数名和变量名重名引发冲突。那么,如果模块名重复应该怎么办呢?在Python中,提出了包(Packaage)的概念。包括每一个分层次的目录结构,它将一组功能相近的模块组织在一个目录下。这样,既可以起到规范代码的作用,又能避免模块名重名引起冲突。


二、Python 程序的包结构

  在实际开项目开发时,通常情况下,会创建多个包用于存放不同类的文件。例如,开发一个网站时,可以创建如同所示的包结构:

在这里插入图片描述

说明: 在图中先创建一个shop的项目,然后在该项目下创建了admin、home、templaates 3个包和一个manaage.py的文件,最后在每个包中,又创建了相应的模块。


三、创建和使用包

  下面将分别介绍如何创建和使用包。


1.创建包

  创建包实际上就是创建一个文件夹,并且在文件夹中创建一个名称为“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的包就创建完毕了,之后就可以在该包中创建所需的模块了。


2.使用包

  创建包以后,就可以在包中创建相应的模块,然后使用import语句从包中加载模块。从包中加载模块通常有以下3中情况:


  【1】通过“import + 完整包名 + 模块名”形式加载指定的模块。

  “import + 完整包名 + 模块名”形式是指:假如有一个名称为settings的包,在该包下有一个名称为size的模块,那么要导入size模块,可以使用下面的代码:

import settings.size
  • 1

  通过该方式导入模块后,使用时需要完整的名称。例如,在已经创建的settings包中创建一个名称为size的模块,并在模块中定义两个变量,代码如下:

width = 800     # 宽度
height = 600	# 高度
  • 1
  • 2
'
运行

  这时,通过;“import + 完整包名 + 模块名”形式导入size模块后,在调用width和height变量时,就需要在变量前加入“settings.size.”前缀。对应代码如下:

import settings.size	# 导入settings包下的size模块
if __name__ == "__main__":
	print("宽度:",settings.size.width)
	print("高度:",settings.size.height)
  • 1
  • 2
  • 3
  • 4

  在执行了上面的代码后,将显示以下内容:

宽度:800
高度:600
  • 1
  • 2

  【2】通过“from + 完整包名 + import + 模块名”形式加载指定模块。

  通过“from + 完整包名 + import + 模块名”形式是指:假如有一个名称为settings的包,在该包下有一个名称为size的模块,那么要导入size模块,可以使用下面的代码:

from settings import size
  • 1

  通过该方式导入模块后,使用时不需要带包前缀,但是需要带模块名。例如,想通过“from + 完整包名 + import + 模块名”形式导入上面已经创建的size模块,并且调用width和height变量,可以通过下面的代码实现:

from settings import size # 导入settings包下的size模块
if __name__ == "__main__":
	print("宽度:",size.width)
	print("高度:",size.height)
  • 1
  • 2
  • 3
  • 4

  在执行了上面的代码后,将显示以下内容:

宽度:800
高度:600
  • 1
  • 2

  【3】通过“from + 完整包名 + 模块名 + import + 定义名”形式指定模块。

  “from + 完整包名 + 模块名 + import + 定义名”形式是指:假如有一个名称为settings的包,在该包下有一个名称为size的模块,那么要导入size模块中的width和height变量,可以使用下面代码:

from settings.size import width,heigt
  • 1

  通过该方式导入模块、变量或类后,在使用时直接使用函数、变量或类即可。例如。想通过“from + 完整包名 + 模块名 + import + 定义名”形式导入上面已经创建的size模块的width和height变量,并输出,就可以通过下面的代码实现:

# 导入settings包下的size模块中width和height变量
from settings.size import width,heigt
if __name__ == "__main__":
	print("宽度:",width)    # 输出宽度
	print("高度:",height)	# 输出高度
  • 1
  • 2
  • 3
  • 4
  • 5

  在执行了上面的代码后,将显示以下内容:

宽度:800
高度:600
  • 1
  • 2

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/983107
推荐阅读
相关标签
  

闽ICP备14008679号