python模块与包简介

模块

1.什么是模块:简单讲模块就是一系列功能的集合体

2.为何用模块:用内置或者第三方模块,提升开发效率

3.如何使用模块:

    前提条件:模块是被执行文件导入使用,模块的导入必须明白谁是执行文件,谁是被导入的模块

  •     import

        首次导入模块发生了三件事

        1.先创建一个模块的名称空间

        2.执行被导入的模块,将执行过程中产生的名称都放入模块的名称空间

        3.在当前执行文件中拿到一个名为被导入的模块名,该名称执行被导入的模块名称空间

        使用方法:指名道姓的访问该模块名称空间的某一特定功能,优点是不会与当前名称空间的名字产生冲突,缺点是每次访问都要加上前缀

例:

import m1 #导入名为m1模块

m1.func   #执行m1模块中的func功能

  •     form...import...

首次from m1 import func 导入模块也都发生了三件事

    1.创建一个模块的名称空间

    2.执行m1.py,将执行过程产生的名称都放入模块的名称空间中

    3.在当前执行文件中直接拿到一个功能名func,该名字是直接指向模块名称空间的某一功能

    使用方法:直接使用该功能即可,优点是无需加任何前缀,缺点是容易与当前名称空间的名字冲突

例:

from m1 import func #将m1模块中的func功能导入

def func():  #在当前执行文件中定义一个名为func的函数

    pass

func() #这里执行的就是当前执行文件中的func,而不是模块m1中的func

1.什么是包:包是模块的另一种形式,包的本质就是一个含有__init__.py文件的文件夹

2.如何使用包:导入包就是在导入包下的__init__.py 与模块的导入无差

import...

from ... import ...

主要的问题有:

1.包内所有的文件都是被导入的,而不是直接运行

2.包内部模块之间的导入可以使用绝对导入(以包的根目录为基准)与相对导入(以当前被导入的模块所在的目录为基准)推荐使用相对导入

3.当文件是执行文件是,无法在该文件内使用相对导入的语法,只有在文件是被当做模块导入时,该文件内才能使用相对导入的语法

4.凡是在导入是带点( . )的,点的左边都必须是一个包

例如:我们在glance/api/version.py中想要导入glance/cmd/manage.py

在glance/api/version.py
#绝对导入

from glance.cmd import manage
manage.main()
#相对导入
from ..cmd import manage
manage.main()

猜你喜欢

转载自blog.csdn.net/zhou_le/article/details/80735091