模块和包(Python语言)

news2024/11/19 19:36:46

目录

一、什么是模块?

二、模块导入方式

2.1方法一:

2.2方法二:

2.3模块导入搜索路径:

2.4模块调用格式:

三、OS模块操作文件

四、模块的操作

4.1模块作用:

4.2模块分类:

4.3魔术变量:

五、模块制作案例


一、什么是模块?

简单的讲模块就是一个“*.py"的文件,文件中定义了很多实现不同功能的函数、属性和方法,类似于C语言中的头文件。在编写程序代码时如果想使用这些已封装在模块中的函数,需要先将其导入到编写程序的代码文件中才能被调用。所谓的包其实就是一个文件夹,文件夹下面保存着各种模块文件。

二、模块导入方式

2.1方法一:

import  模块名,...

说明:

1、导入模块中所有的函数。

2、只能通过“模块名.函数”的方式来引用

首次导入模块的本质:

1、首先解释器会打开模块文件。

2、然后执行模块文件中所有的代码,并产一个和模块名同名的模块对象并将模块文件中定义的函数、属性和方法保存到模块对象中。

3、最后编写程代码的文件就可以通过模块对象即模块名访问到模块文件中定义的所有函数、属性或方法。

2.2方法二:

from  模块名 import   函数名,...

说明:导入模块中部分函数。如果只需使用模块中的某些函数可以使用此方法。如果导入的函数重名,后面导入的函数会覆盖前面导入的函数。也可以使用“*”一次性将模块中所有函数导入。

首次导入模块的本质:

1、以模块为准创建一个和导入的函数同名的对象变量

2、执行模块文件,将执行过程相应的函数保存到对象变量中去

3、这样一来,开发者就可以通过对象变量来访问从模块中导入的某个函数。这意味着,可以直接通过函数名来调用从模块中导入的函数而不用加前缀。

说明:

1、import  模块名  as  别名, 给导入的模块起别名。

2、只能通过“函数名( )"的方式来引用函数、变量。

2.3模块导入搜索路径:

1、当前项目目录

2、如果当前项目目录没有,则到python中sys模块path环境变量中的目录下去查找

3、如果还找不到则到安装python目录下的lib/文件夹下去查找模块。

注意: 用户在自定义模块时,模块的名称不要与系统中的模块重名,否则解释器优先使用用户自定义的模块。

2.4模块调用格式:

方法一:模块名.函数名( )

通过“模块名+函数名”的方式调用模块中的函数可以防止不同模块中同名函数调用所导致的冲突问题。

方法二: 函数名()

此种方式只能应用在函数是以"from .....import"格式导入的情况。

三、OS模块操作文件

  • os.mkdir("E:/迅雷下载/OS测试") -------创建目录,不能多级创建目录
  • os.makedirs("E:/迅雷下载/test1/test2/test3")-----创建多级目录
  • os.rmdir("E:/迅雷下载/OS测试")----------删除空目录
  • shutil.rmtree("E:/迅雷下载/dir1")---------删除多级目录
  • os.rename("E:/迅雷下载/test.txt","E:/迅雷下载/test重命名.txt")--------文件重命名
  • os.remove("E:/迅雷下载/test重命名.txt")-------删除文件
  • os.getcwd()-------获取当前python脚本工作所在路径
  • os.path.join("E:\迅雷下载","Gsyue")------将path1和path2路径拼接成一个路径。其中path是模块文件中导入的一个模块。os.listdir("E:/")------列出路径下所有文件和目录并以列表的形式返回
  • os.listdir("E:/")------列出路径下所有文件和目录并以列表的形式返回
  • os.scandir("E:/")------也是获取路径下所有文件和目录。但返回的是一个可迭代的实例对象;实例对象里面又包含许多其它类的实例对象、这些其它类的实例对象保存着每个子文件的元数据。

        with  os.scandir("E:/")  as  obj_iter:      

                for i  in obj_iter:

                     print(i.name)

  • os.path.isdir("路径")---------判断是否为目录,如果是则返回True,否则返回False。
  • os.path.isfile("路径")--------判断是否为文件,如果是则返回True,否则返回False。

四、模块的操作

4.1模块作用:

1、有逻辑的组织我们的python代码。

2、以库的形式封装不同功能的函数,方便调用者去使用。

3、模块中可以定义函数、类和变量以及可执行的代码。

注意:不同的模块之间可以定义相同的变量名,但作用域只在各自的模块中。

4.2模块分类:

1、内置模块: 安装python软件时系统自带的模块

2、自定义模块: 开发者自己定义的模块

3、第三方模块: 由其它人制作的模块,需要开发者手动安装才能使用。

4.3魔术变量:

1、”__name__“魔术变量通常位于模块文件的末尾处,来对定义好的模块中的函数做测试。

执行本模块文件时“__name__==‘__main__’"   ,而做为模块文件被导入执行时“__name__=='模块文件名' ”。

目的: 为了防止模块在被导入时,其里面函数测试的代码也被执行。

2、”__all__"如果在一个模块中存在此魔术变量,在以“from 模块名 import  *  ”的方式导入模块时,只导入__all__此魔术变量中所保存的属性或函,即不在此魔术变量中的函数或变量无法被导入引用(这里的"*"被__all__变量限制了,不在代表所有)。

五、模块制作案例

1、在项目下创建一个模块文件

2、将模块文件移动到某个目录下

3、在目录下面创建一个setup.py文件,并写入一下内容:

 

 4、在目录下创建bulid/lib文件夹,并将模块文件复制到此目录下,完成模块创建;可以通过命令完成:

5、生成模块包压缩包。此压缩包就可以发布给别人安装使用了。

 6、创建一个项目文件

7、在项目虚拟环境下安装刚才制作好的模块压缩包

8、至此模块就安装到了项目中去,可以导入使用了。

@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!

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

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

相关文章

EXSI技术--Exsi资源分割

我们在搭建好环境之后,就类似于有了一个服务器,现在我们就可以对着一个服务器进行一个虚拟化的操作。给不同的用户使用操作。现在,有一个名叫mit的科技企业需要租用服务器用于创建MySQL数据库集群;另外还有一个IECQ的企业需要服务器搭建电商平台。下面我们为这两个企业分割…

进程Start

Linux中的命令解释器和Windows的程序管理器explorer.exe一样地位,都是在用户态下运行的进程 共享变量发生不同进程间的指令交错,就可能会数据出错 进程只作为除CPU之外系统资源的分配单位 CPU的分配单位是线程 每个进程都有自己的独立用户空间 内核空间是OS内核的…

提高工作效率的一键查询和保存大量快递物流信息的技巧

在如今快速发展的电商行业中,物流服务的准确与便捷是保证顺利交付商品的重要环节。为了方便用户追踪物流,固乔快递查询助手应运而生。这款软件不仅能够快速查询快递单号的物流信息,还具备保存查询结果的功能,方便用户随时查看。 首…

光伏电站、变电站、等直流系统电参量测量仪器怎么选型

安科瑞虞佳豪 壹捌柒陆壹伍玖玖零玖叁 应用场景 工作拓扑图 功能 ①对电能参数进行采样计量和监测,逆变器或者能量管理系统(EMS)与之进行通讯,根据实时功率及累计电能实现防逆流、调节发电量、电池充放电等功能; ②…

初始化列表

文章目录 一. 初始化列表是什么?二. 为什么要有初始化列表?三. 初始化列表的特性四. explicit关键字五. statis成员六. 友元七. 内部类八. 匿名对象九. 编译器优化总结: 一. 初始化列表是什么? 初始化列表是构造函数真正初始化的地…

基于stm32的烟雾浓度检测报警proteus仿真设计(仿真+程序+讲解)

基于STM32的烟雾浓度检测报警仿真设计(仿真程序讲解) 1.主要功能2.仿真3. 程序4. 资料清单&下载链接 基于STM32的烟雾浓度检测报警仿真设计(仿真程序讲解) 仿真图proteus 8.9 程序编译器:keil 5 编程语言:C语言 设计编号&a…

Python编程

Lesson I 解rar压缩包的密码 1 下载Python并安装 网址: 注意选对是32 bit还是64 bit Python Releases for Windows | Python.orgThe official home of the Python Programming Languagehttps://www.python.org/downloads/windows/ 2 安装unrar pip install unrar 3 下载u…

JS中方法、函数、属性是一个东西吗

在 JavaScript 中,方法、函数和属性是相关但不完全相同的概念。 方法(Method):在对象中,方法是对象的属性,但它的值是一个函数。方法可以通过对象来调用,并且可以访问对象的属性和其他方法。 …

从《离婚律师》中学习代理模式

〇、前言 在2014年的时候,有一部非常火爆的电视剧叫做《离婚律师》,里面讲述了两名离婚律师池海东和罗郦的爱恨情仇,片子非常好看,当时我自己也怒刷了好几遍。 那么,在本剧的第四集中,有一段非常搞笑的剧情…

Linux学习之逻辑卷LVM用途和创建

理论基础 Linux文件系统建立在逻辑卷上,逻辑卷建立在物理卷上。 物理卷处于LVM中的最底层,可以将其理解为物理硬盘、硬盘分区或者RAID磁盘阵列,这都可以。卷组建立在物理卷之上,一个卷组可以包含多个物理卷,而且在卷组…

新手小白如何租用GPU云服务器跑深度学习

最近刚学深度学习,自己电脑的cpu版本的pytorch最多跑个LexNet,AlexNet直接就跑不动了,但是作业不能不写,实验不能不做。无奈之下,上网发现还可以租服务器这种操作,我租的服务器每小时0.78人民币&#xff0c…

Linux驱动——Tiny4412芯片_Source Insight的下载+Linux3.5内核下工程的创建

文章目录 前言Source Insight的下载1.下载地址2.下载步骤 linux3.5内核下工程的创建 前言 本博客仅作为笔记总结,以及帮助有需要的人,不作权威解释。 Source Insight的下载 1.下载地址 官网:https://www.sourceinsight.com/ 另外可以选择…

【计算机网络】一文带你弄懂DNS解析过程(最强详解!!)

目录 首先了解一下什么是DNS协议吧 域名的结构 顶级域名 二级域名 根域名 DNS的查询方式 递归查询 迭代查询 完整域名解析系统 首先了解一下什么是DNS协议吧 DNS(Domain Name System)是一个用于将域名(例如www.example.com)…

BTC价格预测:灰度突如其来的胜利是否会打破“九月魔咒”?

加密市场即将进入第三季度交易的最后阶段,由于9月份被视为是比特币的下跌时期,大多数投资者都预测加密货币之王将会进一步下跌。然而,事情却发生了逆转,灰度突如其来的胜利是否会打破“九月魔咒”? 受该事件影响&#…

15.坐标添加带箭头的线

ol的官网示例中有绘制带箭头的线的demo&#xff0c;那个是交互式绘制&#xff0c;而不是根据经纬度坐标添加&#xff0c;在其基础上稍作修改&#xff0c;即可转为通过经纬度添加带箭头的线的功能&#xff0c;线和箭头的粗细大小样式都可以自定义 代码如下 <!DOCTYPE HTML P…

【工程实践】使用git clone 批量下载huggingface模型文件

前言 经常需要下载模型到服务器&#xff0c;使用git clone方法可以快速实现模型下载。 1.选定要下载的模型 以下载moka-ai/m3e-base为例&#xff0c;切换到Files and versions。 2.更改下载网页的url 如上图所示&#xff0c;当前要下载模型网页的url为&#xff1a; https://hu…

【C++初阶】反向迭代器的实现

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

【高阶产品策略】策略价值量化之数据指标

文章目录 1、数据指标概述2、通用指标3、WEB端常用指标4、移动端常用指标5、如何选择一个合适的数据指标 1、数据指标概述 2、通用指标 3、WEB端常用指标 4、移动端常用指标 5、如何选择一个合适的数据指标

无涯教程-Android - Style Demo Example函数

下面的示例演示如何将样式用于单个元素。让我们开始按照以下步骤创建一个简单的Android应用程序- 步骤说明 1 您将使用Android Studio IDE创建一个Android应用程序,并在 com.example.saira_000.myapplication 包下将其命名为 myapplication ,如中所述您好世界Example一章。 2 …

《高效职业人》考试试题及答案截图

中电金信新员工入职培训选修课《高效职业人》考试答案截图