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

模块

为了使代码更容易维护,提高代码重用价值:可以将一组相关功能的代码写入一个单独的.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等这么多的包,或者模块。

总结:

模块<包<库

导入包/模块的方式:(这一块的知识点比较琐碎,需要自己多做实验慢慢体会掌握)

 import M          #导入单个模块import P.M        #导入P包里的某单个模块,会自动执行P里面的__init__.py文件import P.sub_p.M  #导入P包里的子包sub_p里的单个M模块,会自动执行P里的__init__.py和sub_p里的__init__.py文件import M1,M2      #导入多个模块,或者用两次import补充:如果导入的是一个包:①默认不会导入任何模块②解决方案:②.1 在__init__.py文件中,再次导入需要的模块(该模块需要指定一个绝对路径,例如加上包名)②.2 应该以from ... import ... 的形式导入(包>模块>模块资源),导入模块资源时也可以是多个。注意导入顺序:从from到import的顺序应该是包>模块>模块资源这样从大到小的顺序

python的模块、包、库区别。导入包/模块的方式相关推荐

  1. 模块的四种形式 模块的调用 循环导入问题 模块的搜索路径 py文件的两种用途 编译python文件 包...

    目录 模块的四种形式 什么是模块 模块的四种形式 自定义模块 第三方模块 内置模块 包 使用模块的好处 模块的调用 循环导入问题 模块的搜索路径 py文件的两种用途 编译python文件 包 什么是包 ...

  2. R语言使用原生包(基础导入包、graphics)中的plot函数可视化散点图(scatter plot)

    R语言使用原生包(基础导入包.graphics)中的plot函数可视化散点图(scatter plot) 目录

  3. R语言使用原生包(基础导入包、graphics)中的hist函数可视化直方图(histogram plot)

    R语言使用原生包(基础导入包.graphics)中的hist函数可视化直方图(histogram plot) 目录

  4. python导入模块教程_Python教程——导入自定义模块

    #Python 教程 -- 导入自定义模块 导入自定义模块之前我们先创建一个自己的模 块,功能可以随便写,比如下面所示定义了两个功能模块,一个是输出调用的名字, 一个是计算九九乘法表 在项目下创建一个 ...

  5. android差分包和整包的区别,整包升级与差分升级的区别

    一.简介: OTA升级有两种类型,每一种类型都有对应的用途和优势.但是,只有一种类型是用户常常能够接触到的.现在我们来一起熟悉他们.如下图: 从上面的曲线图中我们知道,这两种类型分别是:Increme ...

  6. Python环境变量PYTHONPATH设置、导入第三方模块

    1.暂时设置模块的搜索路径--修改sys.path 我们在导入模块的时候,python会在指定的路径下搜索相对应的.py文件,搜索路径存放在sys模块的sys.path变量中,如下图 这个path变量 ...

  7. jupyter找不到模块_Jupyter notebook无法导入第三方模块的解决方式

    在CMD控制台进入Jupyter notebook之前,先激活安装了该模块的配置环境,再启动jupyter notebook,问题完美解决. 补充知识:anaconda安装jupyter notebo ...

  8. idea创建多模块Springboot项目、导入多模块、删除多模块

    前言 在eclipse中有Workspace(工作空间)和 Project(工程)的概念在 IDEA中只有 Project(工程)和 Module(模块)的概念.这个地方刚开始用的时候会很容易理不清它 ...

  9. IDEA从零到精通(33)之IDEA优化导包(自动导入包、删除包)

    文章目录 作者简介 引言 导航 概述 设置 测试实例 小结 导航 热门专栏推荐 作者简介 作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java.JavaScript,博主也是从 ...

  10. python编写自定义模块_编写和导入自定义模块/类

    我有一个类,我正试图编写一个名为dbObject的类,并试图从另一个文件夹中的脚本导入它.我的结构如下:/var/www/html/py/testobj.py /var/www/html/py/obj ...

最新文章

  1. AI科研绘图1:零基础入门和基本图形绘制
  2. undefined reference to symbol ‘_ZN2cv7imwriteERKNS_6StringERKNS_11_InputArrayERKSt6vectorIiSaIiEE‘
  3. hdu2833 Floyd + dp
  4. SQL SERVER 2008 SN
  5. el-drawer点击的时候为什么有边框_剪映教学之视频拍摄加剪辑【一】:出视频上下黑色边框模糊效果,视频广告配音...
  6. 关于在Win10系统将标注软件labelme打包生成.exe可执行文件
  7. 起底方舟编译器的引用计数!
  8. SQL Server 填充因子
  9. 美国专利复审程序中Claim Construction标准变更带来的可能影响
  10. html5 csss透明,详解CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
  11. 支配树(Dominator Tree)
  12. Ubuntu,不能sudo,也不能root登录
  13. 让慢行回归城市—佛山祖庙商圈慢行系统改善工程
  14. 外贸供应链ERP怎么选?全流程综合管理解析
  15. sublime插件之sidebar
  16. RHEL7升级内核版本
  17. Ubuntu16.04 + Geforce GT630 OEM安装cuda 8.0
  18. 阿里巴巴-数据平台事业部-数据产品部:寻找真爱
  19. linux ps-l命令详解,ps命令实用方法.ps -l ps -L详解
  20. 《ThinkPHP 5实战》4个实战开发案例可从代码仓库下载

热门文章

  1. 【EXCEL】VLOOKUP函数反向应用
  2. 关于“AI是不是胡扯”之争:这是中国科技圈的胜利
  3. [Oracle] CPU/PSU补丁安装详细教程
  4. 如何安装透明窗口主题Emerald在Ubuntu 13.04/12.10/12.04中-PPA
  5. (进阶篇)Cookie与 Session使用详解
  6. ARP***绑定 linux/windows 下解决方案
  7. linux history 历史命令行查询和使用
  8. C#编写串口程序(详细教程)
  9. 算法基础课-搜索与图论-spfa-AcWing 852. spfa判断负环:spfa求负环板子
  10. 算法刷题-数论-质数的判定、分解质因数、筛质数