python的模块、包、库区别。导入包/模块的方式 您所在的位置:网站首页 模块和包是什么关系 python的模块、包、库区别。导入包/模块的方式

python的模块、包、库区别。导入包/模块的方式

2024-07-10 23:51| 来源: 网络整理| 查看: 265

直接进入主题,如果觉得文章可以,记得点点赞和关注,我主要会写一些在学习过程中遇到的困难 模块

为了使代码更容易维护,提高代码重用价值:可以将一组相关功能的代码写入一个单独的.py文件中;使别人导入使用;这个.py文件就被称作是一个模块

当我们使用 import 语句导入模块时,Python解释器首先会去内置名称空间中寻找,即判断导入的模块是不是内置模块(例如time模块就是Python内置模块),然后再去 sys.path 列表中定义的路径从前往后寻找 .py文件 如下是在个人笔记本上输出的 sys.path列表:

>>> import sys >>> sys.path ['', 'D:\\Pycharm\\pychon_jieshiqi\\python37.zip', 'D:\\Pycharm\\pychon_jieshiqi\\DLLs', 'D:\\Pycharm\\pychon_jieshiqi\\lib', 'D:\\Pycharm\\pychon_jieshiqi', 'D:\\Pycharm\\pychon_jieshiqi\\lib\\site-packages'] >>> 包

包是一个有层次的文件目录结构,它定义了由相关的(或者说是在这个模块里需要调用另一个模块)n个模块或n个子包。包含__init__.py文件的目录,这个目录下一定的有则会个__init__.py文件和其他模块或子包。在调用这个包时都会执行package 包下和子包下的 init 文件。

现在有如下目录结构: ├─ROOT │ ├─pk_1 │ │ ├─__init__.py │ │ ├─m1.py │ ├─pk_2 │ │ ├─__init__.py │ │ └─m2.py │ ├─__init__.py │ ├─test.py pk_1 和 pk_2 包中的 init.py 文件都为空,ROOT包下的 test.py 想要使用 pk_1 包下 m1模块中的方法,可以使用如下语句:

#test.py from pk_1 import m1 m1.fun_1() # fun_1() 为m1模块中的方法

但是使用如下语句,就会抛出异常:

#test.py from pk_1 import * m1.fun_1() # 异常信息: NameError: name 'm1' is not defined ***************************************************************** ***************************************************************** #test.py import pk_1 pk_1.m1.fun_1() # 异常信息: AttributeError: module 'pk_1' has no attribute 'm1'

这时候可以在 pk_1 包中的__init__.py 中 进行 包提升(在包中提升导入权限),pk_1 包的 init.py 文件内容如下:

#pk_1包下的_init_.py from pk_1.m1 import fun_1

然后在 test.py 文件中可以直接通过包名引入方法:

1) from pk_1 import fun_1 # 或 from pk_1 import * fun_1() 2) import pk_1 pk_1.fun_1()

这个就是 包中 init.py 文件存在的意义,可以将相关的导入语句 或 提升导入权限的语句 写在 init.py文件中,这样使用者就不需要了解包中的内部结构,可以直接通过包名 调用该包(package)中某个模块的方法~

参照其他编程语言的一个喊法;完成一定功能的代码集合,具体表现可以是一个模块,也可以是包。库可以理解为仓库,例如标准库,则是一组很多的想numpy,matplotlib等这么多的包,或者模块。

总结:

模块模块资源),导入模块资源时也可以是多个。 注意导入顺序:从from到import的顺序应该是包>模块>模块资源这样从大到小的顺序



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有