Python全栈-day14-模块和包

Posted 燕云十八骑_Z

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python全栈-day14-模块和包相关的知识,希望对你有一定的参考价值。

一、模块

1.模块

  1)定义

    一系列功能的集合体,在Python中py文件就是一个模块

  2)模块的类别

    a.使用Python编写的py文件

    b.已经被编译成共享库或者DLL的C 或者 C++ 扩展

    c.把一系列模块组织在一起的文件夹(注:文件夹下有一个__init__.py文件,该文件成称之为包)

    d.使用 C 编写并链接到Python解释器的内置模块

  3)为什么要实用模块

    a.重用功能

    b.拿来主义,提高开发效率

2.模块的导入方法

    1)方法一:

      import  模块名

      调用模块内功能:  模块名.模块名名称空间中的名字

      一次导入之后,直接引用第一次导入的结果,不会重复执行文件模块中的功能

      导入时执行三件事:

        a.创建文件名称空间

        b.执行模块对应文件,把名字放在创建的名称空间中

        c.在当前执行文件中拿到一个模块名,该模块指向建立的名称空间

# 导入和调用模块内的功能
import time
res = time.sleep(5)

# 导入模块后起别名
import socketserver as sockserver

# 一行导入多个模块
# import xx,ss,yy....

    2)方法二:

      from  模块名  import  xxx(名字)

      首次导入模块,前两件事和import导入的方法一样,第三件事直接拿xxx(属于执行文件的名称空间),xxx是指向模块中对应的值

      优点:不加前缀,代码比较精简

      缺点:容易与当前执行文件名称空间中的名字重复,导致无法引用

# 导入方法
from time import sleep
# 全部导入
from time import sleep *

    3)通过__name__区分py文件的两种用途

      a.if __name__ == \'__main__\'  文件被当做脚本执行

      b.等于模块名时,文件被当做模块导入

    4)模块的搜索路径

      内存   >  内置模块  >  sys.path

强调:

  sys.path的第一个值为当前执行文件的文件夹

  通过搜索顺序可以看出,通过from导入模块或者开发人员把当前执行文件的名字或者文件内的对象定义成引用的模块的名字时,会出现无法引用模块的错误

二、包

1.包

  1)定义

    包是一种通过使用 \'.模块名  \' 来组织Python模块名称空间的方式,具体说包就是一个含有__init__.py文件的文件夹,创建的目的就是为了用文件夹/模块组织起来

  注意:

    a.在Python3.x中,即使包下没有__init__.py文件,导入包也不会出错,而在Python2.x中,包下必须存在该文件

    b.创建包的目的不是为了运行,而是被导入使用,包只是模块的一种形式,其本质就是模块

2.为什么使用包

  包是有文件夹组织起来的模块,文件夹的功能就是将模块组织起来,随着功能越写越多,我们将无法将所有功能都放在一个文件夹中,于是通过文件夹把模块组织起来,以提高程序的结构性和可维护性

 补充知识:

包的使用
  1.创建包的名称空间
  2.在执行包下面的__init__文件的时候,将包内的名称保存到包的名称空间中
  3.从执行文件内拿到的名字,并指向创建的包的模块名称空间中

强调:
  1.在导入是带点的,点的左边必须是一个包,这是导入包特有的语法
  2.包内,模块直接的导入应该使用from ... import ...
  3.from ... import ...导入之后,必须是一个明确的名字,无任何前缀
from x.y.z import i.j.k   # 错误,可以是模块或者和包

导入方式:
  1.绝对导入:按绝对路径导入
  2.相对导入:按相对路径导入

 

以上是关于Python全栈-day14-模块和包的主要内容,如果未能解决你的问题,请参考以下文章

python全栈开发第十二篇Python的模块和包

python全栈开发从入门到放弃之模块和包

python's twenty eithth day for me 模块和包

python基础14 ---函数模块5(模块和包)

Python全栈开发,Day6 - 模块学习

python之模块和包