模块的基本概念:

模块是程序,它就是一个扩展名为.py的python程序。因此对于一个.py的python文件而言,既可以把它当作程序来执行,也可以将它作为模块引入。

导入一个模块时,python解释器会先自动在当前路径下搜索要导入的模块,如果没有找到,则会自动到python标准模块安装路径(python默认自带的)中搜索,如果还没找到,则报错ModuleNotFoundError。

在sys模块的path属性中,可以看到python自动导入的所有路径(以列表的形式存放)。sys的path属性中除了本来就有的python系统自带的标准模块的路径之外,还会将当前执行文件的路径临时的加到path属性中。所以,python解释器可以在当前路径中找模块,事实上跟同级路径的概念并没有关系,而是python解释器将执行文件的所在路径临时的加到了path属性中,且放在了第一个位置。

除了python可以自动寻找的路径之外,我们还可以指定路径,并将路径告诉python解释器。因此对于我们自己写的文件,要想可以作为模块被导入,有三种方法:

将模块写在当前目录中,python会直接自动找到;

将模块发布并安装到python标准模块安装的路径中,python也可以自动找到;

将我们自己写的模块路径append到sys模块的path属性列表中,即告诉python解释器,我们自定义的模块的路径位置。

执行了.py文件后,会发现目录中多了一个__pycache__的目录,这个目录中存放着执行.py文件后生成的文件中的import导入的模块的编译文件,下次再执行该文件时,遇到import导入的相同模块时,将直接执行此编译文件,不再重新编译相同的模块,节省执行时间。

__all__在模块中的作用:

当使用“ from 模块名 import * ”的方式从模块中导入所有内容时,模块中以_或着__开头的私有属性、函数或者类将不会被导入,因为以这种方式导入模块中的内容时,导入的将是模块中__all__属性中的内容。在默认情况下,私有属性、函数或者类是不会被放到__all__属性中的。当然我们可以自定义模块的__all__属性中的内容,让模块中的哪些属性、函数或者类(包括私有的)可以被导入。

如果是通过“ import 模块名 ”的方式导入模块,则可以用“ 模块名. ”的方式来访问模块中的所有属性、函数和类(包括私有的)。因为只有通过“ from 模块名 import * ”的方式才会导入模块中__all__中的内容。

模块中还有一个__file__属性,它可以告诉我们此模块的位置(路径)。

当一个.py文件作为模块被导入时,实际上会执行一次该文件。我们导入模块时,只是想要模块中的类、函数或者变量等,而并不是要真正的去执行该文件。所以在文件中,被执行的代码或者要调试的代码,应写在if __name__ == ‘__main__’:中。当文件作为模块导入时,则不会执行if __name__ == ‘__main__’中的内容;当文件作为.py文件执行或者调试时,就会执行if __name__ == ‘__main__’中的内容。因为文件作为模块导入的时候被执行时,__name__得到的是文件名路径的字符串;直接作为.py文件执行时,__name__得到的时’__main__’字符串。

包和库:

python标准库中包含多个包,每个包中又有多个模块,包即是目录(文件夹),用来存放模块。当要引用某个包中的模块时,需要在该包中放一个__init__.py文件。__init__.py可以只是一个空文件,将它放在某个目录中,就可以使得该目录中的其它.py文件能够作为模块被引用。

注意,每一个包中的__init__.py文件是必须存在的,否则,Python就会把这个目录当成普通目录(文件夹),而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是对应包的名字。调用包就是执行包中的__init__.py文件。

python 模块 包 库_模块(包、库)相关推荐

  1. python动态图表变化_用 Matplotlib 库生成动画图表

    更多文章请关注微信公众号:硬核智能 动画是一种展示现象的有趣方式.相对于静态图表,人类总是容易被动画和交互式图表所吸引.在描述多年来的股票价格.过去十年的气候变化.季节性和趋势等时间序列数据时,动画更 ...

  2. python爬虫好友图片_用itchat库爬取你所有微信好友的头像,并合成一张大图

    几年前,我们给爸妈手机上下载了一款神奇的软件,他的名字叫微信.几年后,爸妈就开始吐槽我们的微信头像了. 爸妈对我们微信头像的关注程度远胜过我们的衣食住行,我在新浪微博上看到了这张统计图. 图片来源:新 ...

  3. python心跳包原理_心跳包机制设计详解 转载

    存在下面两种情形: 情形一:一个客户端连接服务器以后,如果长期没有和服务器有数据来往,可能会被防火墙程序关闭连接,有时候我们并不想要被关闭连接.例如,对于一个即时通讯软件,如果服务器没有消息时,我们确 ...

  4. solidworks电气元件3d库_丨部件库丨西门子3RT60交流接触器

    部件库 西门子3RT60交流接触器 编辑丨钻石海 出品丨电气CAD论坛 本次发布的西门子SIRIUS(国产)3RT60系列交流接触器包含AC380V.AC220V和辅助触点.包含2D/3D宏.连接点排 ...

  5. iphone7wifi模块多少钱_模块炉价格参差不齐,消费者应独具慧眼!

    前几篇文章小编就有提到:"模块炉是什么?不是所有蒸汽锅炉都叫模块炉!"如果你们都了解这个问题,相信就不会单凭模块炉的价格来选购模块炉设备了.这里简单重复下,真正的模块炉是应该能做到 ...

  6. python3.8安装pyinstaller库_模块:pyinstaller库的安装与使用

    PyInstaller库的安装 (cmd命令行) pip install pyinstaller 如果安装失败 python 3.8 不兼容. 解决方案:安装和使用pyinstaller 4.0 de ...

  7. python的数学建模库_数学建模库

    NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. 引用: import numpy as ...

  8. python和verilog对接_用这个库居然可以使用Python进行FPGA逻辑开发

    未经私信同意禁止转载! 不好意思,又标题党了,为了骗阅读量没办法... 前言 今天为大家介绍一下python的MyHDL 库.MyHDL项目的目标是通过python语言的优雅和简洁性来增强硬件设计者的 ...

  9. python路线寻优_基于DEAP库的Python进化算法从入门到入土 --(四)遗传算法的改进...

    前言 前面一节我们尝试了用GA求解TSP问题,简单遗传算法总是不能很好收敛到一个较优的解,在用时和求解精度上都被贪心算法吊打.在末尾我们总结了三个可能的改进方向,这次我们想要沿着这三个方向试着改进简单 ...

最新文章

  1. 溢价 5 倍欲将 SiFive 收入麾下,英特尔的绝地反击战
  2. python的api库_python 利用toapi库自动生成api
  3. mseloss pytorch_PyTorch 卷积与BatchNorm的融合
  4. sqlserver中select造成死锁
  5. 杭电2502--月之数
  6. 如何启用nodejs request模块的调试模式
  7. hapi 获取 请求地址 url
  8. 【转】LDA数学八卦
  9. MySQL内核月报 2015.02-MySQL · 答疑释惑· InnoDB丢失自增值
  10. C语言中,int、char、float、double各占多少字节
  11. 嵌入式用HTTP请求下载bin文件
  12. 1212_MISRA_C规范学习笔记_控制表达式规则要求
  13. 麒麟操作系统安装达梦数据库实战
  14. 图像处理常用函数(Matlab)
  15. D. Good Triple
  16. 蓝牙音响加拿大IC认证知多少
  17. PS实用小技巧--修改图片上的文字
  18. html京东自动轮播,js 京东首页轮播图实现(透明度切换)
  19. C++面向对象程序设计:地铁自动售票系统
  20. JQuery中 JSON 兼容性问题(针对ie8)

热门文章

  1. (转)关于X64位系统IIS7下支持32位asp.net程序
  2. SQL Server 2005 高级程序设计 学习笔记(2)
  3. 宁波政务云资源的介绍与申请
  4. python创建数组与列表_python基础(三):数组和列表
  5. php打印布尔型,PHP数据类型之布尔型的介绍_PHP
  6. transformer论文解读_【论文解读】ICLR2020 | 深度自适应Transformer
  7. java isempty_Java ArrayDeque isEmpty()方法与示例
  8. openssl java aes_请问如何使用AES对使用OpenSSL命令加密的Java文件进行解密?
  9. ensp路由器无法启动_品胜云路由器Breed刷入详细教程,技巧和注意事项,功能大增...
  10. csv导入mysql phpmyadmin_【转】从phpMyAdmin批量导入Excel内容到MySQL(亲测非常简洁有效)...