python 模块 包 库_模块(包、库)

模块的基本概念:

模块是程序,它就是一个扩展名为.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文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络课设题目java_java课程设计参考题目

参考题目选题原则:所完成的系统应能够在生活、学习中使用,以实用性为主。模仿生活、学习中使用到的各种软件,做mini版本。开发的目标是自己、同学愿意使用你所开发的软件完成一些简单任务。从小功能着手,一点点的添加功能。添加一…

win7系统安装信息服务器不可用怎么办,Win7系统下iis服务器应用程序不可用怎么办?...

Win7系统用户在使用电脑系统时都有自带可以方便用户们搭建网站的iis服务器。不过也有Win7系统用户反映在电脑系统里添加或删除组件时iis服务器无法添加,还弹跳出了应用程序不可用的提示窗口,这使用户非常苦恼,那么Win7系统下iis服务器应用程序…

python协同过滤电影推荐_基于协同过滤的电影推荐系统的设计与实现

龙源期刊网http://www.qikan.com.cn基于协同过滤的电影推荐系统的设计与实现作者:张玉叶

++ 多核cpu 并行_一文读懂什么是多核并行计算(三)

导读:面向应用工程师的商业软件咨询、自研软件定制开发服务的仿真公众号,点击关注进入菜单,查看更多精彩内容。(三)如何实现多核并行计算呢?了解了多核、多Machine、多Rack后,我可以看一下软件(程序)是如何对这些资源进…

诺禾致源css客户端,诺禾,诺禾致源:CSS 基础教学

伦多星报 2020-07-06 17:14:58Applying CSS and JavaScript to HTML当今您将使用的几乎所有网站都将使用CSS使它们看起来很酷,并使用JavaScript来支持交互式功能,例如视频播放器,地图,游戏等. 这些最常分别使用元素和元素应用于网…

python 文档操作_Python 文件操作

一. Python 读写 创建文件Python中对文件,文件夹(文件操作函数)的操作需要涉及到OS 模块和 shutil 模块 .一) . OS模块 的基本操作方法功能os.getcwd()得到当前工作目录,及当前Python脚本工作的目录路径os.listdir()返回指定目录下的所有文件和目录名:os.remoce()函数用来删除一…

vc读取北通手柄按键_《噬血代码》手柄怎么操作 北通手柄按键功能详解

噬血代码手柄怎么操作?应该很多朋友都还不是很清楚吧,所以呢小编今天给大家带来的就是噬血代码北通手柄按键功能详解,需要的朋友不妨进来看看。北通手柄按键功能详解游戏介绍本作是由《噬神者》的开发团队带来的完全新作,是迷宫探…

服务器放行6in4协议,最简单的接入IPv6网络的方法 – 6in4隧道

很多大学的校园网启用了IPv6,并且建设了很多IPv6专享的资源。毕业离校,由于现在的网络运营商绝大部分尚未支持IPv6,所以那些资源也就离我们远去了。机缘巧合之下,我知道了,原来我们可以这样接入IPv6网络。目前接入IPv6…

python自动寻路模板_Python实现的简单模板引擎功能示例

本文实例讲述了Python实现的简单模板引擎功能。分享给大家供大家参考,具体如下:#coding:utf- 8__author__"sdm"__author_emailsdmzhu3gmail.com__date__ "$2009-8-25 21:04:13$" pytpl 类似 php的模板类 import sysimport StringIOi…

梦幻群侠传5帮派修炼_梦幻西游:2020年十大更新回顾 法连不秒空和连续战斗修复...

今年梦幻西游有过很多重大的维护更新,其中不少更新都对玩家产生中重大的影响,比如说法术连击第二下不会秒空气,以及副本的迭代等等,今天就来盘点下2020年梦幻西游的十大更新!一、各类副本优化迭代今年优化了多个副本,如…

jq ajax提交评论,织梦评论怎么改成自己的jq ajax评论

如何把织梦评论框改成自己的1、首先我们先获取织梦评论吧!这个比较简单,打开/plus/feedback_ajax.php文件,我们找到这第36行左右代码,看下面/*----------------------获得指定页的评论内容function getlist(){ }-----------------…

前端图片上坐标连线_前端图形学(十三)——弹跳运动的深入之傲娇的小球

欢迎来到【畅哥聊技术】前端图形学相关技术文章,更多精彩内容持续更新中,敬请关注。前面我们说到了小球的弹跳运动,通过一个方向的加速度和摩擦力去影响小球的动画,其目标点也是一个固定不变的,似乎有些单调。那么我们今天继续小球…

python通过内置函数测试对象类型_Python的内置函数

函数名功能描述示例abs()返回数字的绝对值abs(-45)divmod()把除数和余数运算结合起来,返回一个包含商和余数的元组divmod(7,2) 返回:(3,1)raw_input()获取控制台输入,将所有输入看作字符串,返回字符串类型araw_input("input&…

服务器微信了早上好,微信早晨好问候语句动态图片 早上好发给朋友的微信早安问候语简短...

原标题:微信早晨好问候语句动态图片 早上好发给朋友的微信早安问候语简短嘀嘀嘀嘀,我的短信到啦。用关心方式,要你多注意休息;用体贴方式,要你轻松而快乐;用祝福方式,要你一切都过的好&#xff…

c语言调用createthread线程的头文件_易语言API多线程总汇

【thread】 即,线程,是进程中某一顺序的控制流,在单个程序中同时运行多个线程完成不同工作,称为多线程。易语言多线程理解:进程是一个可执行程序,由私有虚拟地址空间、代码、数据和其它操作系统资源组成&am…

oracle varchar默认长度_面试官:如何精确计算mysql数据库索引长度?

概述我们知道MySQL Innodb 对于索引长度的限制为 767 字节,并且UTF8mb4字符集是4字节字符集,则 767字节 / 4字节每字符 191字符(默认索引最大长度),所以在varchar(255)或char(255) 类型字段上创建索引会失败,提示最大索引长度为7…

服务器能像客户端发信息吗,服务器怎么向客户端发信息吗

弹性云服务器 ECS弹性云服务器(Elastic Cloud Server)是一种可随时自助获取、可弹性伸缩的云服务器,帮助用户打造可靠、安全、灵活、高效的应用环境,确保服务持久稳定运行,提升运维效率三年低至5折,多种配置可选了解详情Linux云服…

android things 系统镜像文件_开始菜单搬家!Win 10X 系统 UI 全部重做,明年初就能用上...

不知道老伙计们还记不记得,小淙曾经报道过三次,关于微软新系统 Windows 10X 的消息。当时很多老伙计感觉太遥远,或者觉得它难以激起波澜。但现在看来微软布局已久,是铁了心要搞新系统了。因为 Windows 10X 系统已经准备好交付&…

通达信公式大全_通达信MACD金叉的选股公式大全

公式来源于网络&#xff0c;我只是用其中一个&#xff0c;一起复制来了&#xff0c;有需要的自取吧。1、0轴上方第一次金叉选股公式&#xff1a;DIFF:EMA(CLOSE,12) - EMA(CLOSE,26);DEA : EMA(DIFF,9);MACD : 2*(DIFF-DEA);xg:cross(diff,dea) and dea>-1.0 and dea<0.5…

mysql 时间差_后端从mysql取值返回0时区时间数据的问题

近日搞一个B/S项目&#xff0c;前端页面时间字段总是显示格林威冶时间&#xff0c;也就是0时区的时间&#xff0c;比北京时间差了8个小时。打开后台的数据库&#xff0c;在workbench中查询&#xff0c;结果显示的时间格式正常&#xff0c;为当前北京时间。该时间字段是在往数据…