【Python基础入门系列】第06天:Python 模块和包

        在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护

为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)

先给大家解释一下模块、包、库之间的概念:

  • 模块(module)其实就是 py 文件,里面定义了一些函数、类、变量等

  • 包(package)是多个模块的聚合体形成的文件夹,里面可以是多个 py 文件,也可以嵌套文件夹

  • 库是参考其他编程语言的说法,是指完成一定功能的代码集合,在 Python 中的形式就是模块和包

下面我们来分开介绍:模块

 

使用模块有什么好处?

最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。

使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突

定义和调用 Python 模块

下面先来看真实的定义一个 Python 模块。

定义一个 hello.py 模块,内容如下:


def sayhello( ):print("Hello 学长!")

一般情况下,我们使用 import 语句来引入模块:

 

import module1[, module2[,... moduleN]]

当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。调用的时候使用 模块名.函数名 来进行调用

以上的示例为例,我们新建 do.py 文件调用 hello.py 模块中方法。

do.py 文件内容如下:


# 导入模块
import hello# 现在可以调用模块里包含的函数了
hello.sayhello()

在 do.py 页面执行快捷键 ctrl+b (sumblime中)

控制台输出:Hello 学长!,证明调用 hello.py 中的方法成功。

再来说“包”

 

你也许还想到,如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。

举个例子,一个abc.py的文件就是一个名字叫abc的模块,一个xyz.py的文件就是一个名字叫xyz的模块。

现在,假设我们的abcxyz这两个模块名字与其他模块冲突了,于是我们可以通过包来组织模块,避免冲突。方法是选择一个顶层包名,比如mycompany,按照如下目录存放:

 

mycompany
├─ __init__.py
├─ abc.py
└─ xyz.py


 

包(package)是 Python 中对模块的更高一级的抽象。

简单来说,Python 允许用户把目录当成模块看待。这样一来,目录中的不同模块文件,就变成了「包」里面的子模块。此外,包目录下还可以有子目录,这些子目录也可以是 Python 包。这种分层,对模块识别、管理,都是非常有好处的。

特别地,对于一些大型 Python 工具包,内里可能有成百上千个不同功能的模块。科学计算领域,SciPy, NumPy, Matplotlib 等第三方工具,都是用包的形式发布的。

包定义

常见的包层级目录结构如下:

 

pakageName
-------__init__.py
-------moduleName1.py
-------moduleName2.py
------- ...

包路径下必须存在 __init__.py 文件。

使用 Python 包

Python 包的使用和模块的使用类似,下面是导入的语法:

 

import 包名.包名.模块名

 

 

总结

 

本节给大家介绍了 Python  模块和包的使用,模块是一组Python代码的集合,可以使用其他模块,也可以被其他模块使用。创建自己的模块时,要注意:

  • 模块名要遵循Python变量命名规范,不要使用中文、特殊字符;

  • 模块名不要和系统模块名冲突,最好先查看系统是否已存在该模块,

    检查方法是在Python交互环境执行import abc,若成功则说明系统存在此模块。

 

参考:

https://www.liaoxuefeng.com/wiki/1016959663602400/1017454145014176

https://www.python.org/

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

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

相关文章

Css中的选择器

Css选择器 CSS代码用来修饰 HTML元素. 要用CSS代码设置样式, 首先要选中HTML元素. 用来选中 元素的 代码称为 选择器, 或 选择符. html元素是指, 标签与标签包裹内容的整体. 常用的选择器有如下几种: 1、标签选择器 标签选择器,此种选择器影响范围大…

福州联通与市政府携手 共筑新型智慧城市

“福州联通今年将投入专项资金,在福州市区建设NB-IoT网络,包括2000个载扇部署,建设一张覆盖完备、性能领先的窄带物联网。”据介绍,去年9月,福州联通与福州市政府正式签署《共同推进窄带物联网(NB-IoT&…

流媒体技术的国内外动态

1、大规模流媒体应用中关键技术的研究 支持大规模用户在线使用的流媒体应用是Internet中极富潜力的一项“重磅级用”,但由于Internet缺乏服务质量(QoS)与相应的安全保障,并且网络和终端系统又存在着较大的异构性,这使得在Internet上构建支持大规模用户的在线流媒体应用面临很多…

空间直线与平面的交点

这内容属于计算几何,在 3D游戏开发编程基础 或者在游戏开发中的数学和物理算法 这种资料上也可以找到相关的内容和代码。或者更广泛点称为是计算机图形学, 接下来我们进入正题,如果直线不与平面平行,将存在交点。如下图所示&#…

iphone导出视频 无法连接到设备_拷贝iphone照片,显示无法连接设备?TRIZ 3秒钟解决...

手机存储满了,想把手机里面的照片和视频拷贝出来。 又不想交给苹果cloud的“苹果税”。USB手动连上IPHONE,结果每次复制了几百兆,就会弹出“无法连接设备”,导致拷贝失败。并且每次重新连接之后,删掉的照片又出现在手机…

【Python基础入门系列】第07天:Python 数据结构--序列

python内置序列类型最常见的是列表,元组和字符串。(序列是python中最基础的数据结构,而数据结构是计算机存储,组织数据的方式。) 另外还提供了字典和集合的数据结构,但他们属于无顺序的数据集合体&#xf…

Css颜色和文本字体

Css颜色,文本字体 css颜色表示法 颜色名表示,比如:red 红色,gold 金色16进制数值表示,比如:#ff0000 表示红色,这种可以简写成 #f00RGB颜色: 红(R)、绿(G)、蓝(B)三个颜色通道的变化 background-color: r…

springBoot(20):使用Spring Session实现集群-redis

一、session集群的解决方案1.1、扩展指定server利用Servlet容器提供的插件功能,自定义HttpSession的创建和管理策略,并通过配置的方式替换掉默认的策略。缺点:耦合Tomcat/Jetty等Servlet容器,不能随意更换容器。1.2、利用Filter利…

docker desktop ubuntu镜像_原创 | Docker入门,看了不理解,假一赔命

写在前面这篇博客适合谁?对于Docker并不了解,只是有一点模糊的感觉,觉得Docker可以当成虚拟机用之类的只是下载了Docker软件,对于怎么配置,怎么玩,第一步干什么,完全一无所知其二,我…

Windows - Windows下安装MSI程序遇到2503和2502错误

三个步骤可以解决这个问题&#xff1a; 1&#xff09; 以管理员身份开启命令行模式并键入msiexec /package <msi文件路径> 2&#xff09; 修改组策略 计算机配置 ->> 管理模板 ->> Windows组件 ->> Windows Installer ->> 始终以提升的权限进行安…

如何确定h.264的码率

A:如何确定h.264的码率&#xff1f; 码率 编码产生的总比特数 * 帧频 / 编码总帧数码率控制机制就是使编码器编码产生的码流尽量符合你设定的码率。从上面的公式可以看出&#xff0c;当编码帧数和帧频确定后&#xff0c;码率控制要做的就是控制编码产生的比特数。 A:我现在想…

【Python基础入门系列】第08天:Python List

Python内置的一种数据类型是列表&#xff1a;list。list是一种有序的集合&#xff0c;可以随时添加和删除其中的元素。 LIST 列表 比如&#xff0c;列出班里所有同学的名字&#xff0c;就可以用一个list表示&#xff1a; >>> classmates [liuwang, xuezhang, al…

金属磁记忆传感器封装

金属磁记忆传感器封装 摘 要 通过分析压力传感器和FBG传感器的结构,针对金属磁记忆传感器自身特点,结合井下作业要求,提出了金属磁记忆传感器的封装设计原则;根据该原则,设计出了一种金属磁记忆传感器的封装结构,并对其进行了有限元模拟分析;对封装后的金属磁记忆传感器实物进…

【Python基础入门系列】第09天:Python tuple

Python 中的数据结构是通过某种方式组织在一起的数据元素的集合&#xff0c;这些数据元素可以是数字、字符、甚至可以是其他数据结构 在 Python 中&#xff0c;最基本的数据结构是序列&#xff08;在前面文章我们也说过序列&#xff09;&#xff0c;序列中的每个元素都有一个序…

黑客攻防:关于工业网络安全的那些事

1、概述 随着工业信息化的快速发展以及工业4.0时代的到来&#xff0c;工业化与信息化的融合趋势越来越明显&#xff0c;工业控制系统也在利用最新的计算机网络技术来提高系统间的集成、互联以及信息化管理水平。未来为了提高生产效率和效益&#xff0c;工控网络会越来越开放&am…

elementui table某一列是否显示_Vue项目引进ElementUI组件的方法

环境要求NodejsNodejs官网下载地址&#xff1a;http://nodejs.cn/download/具体安装参考其他资料打开cmd命令行&#xff0c;输入npm -v&#xff0c;如果出现如下图的显示&#xff0c;说明已经安装正确。如果安装版本比较老&#xff0c;想升级新版本npm install npm -g安装 webp…

Entry

Entry&#xff08;单行输入框&#xff09;用于获取用户输入的文本。 Entry组件仅允许输入一行文本&#xff0c;如果输入过长&#xff0c;那么内容将被滚动&#xff0c;意味着字符串不能被全部看到。 1 from tkinter import *2 3 master Tk()4 5 e Entry(master)6 e.pack(padx…

集成电路版图与工艺课程设计之用CMOS实现Y=AB+C电路与版图

1 绪论 1.1 设计背景 集成电路设计&#xff08;Integrated circuit design, IC design&#xff09;&#xff0c;亦可称之为超大规模集成电路设计&#xff08;VLSI design&#xff09;&#xff0c;是指以集成电路、超大规模集成电路为目标的设计流程。集成电路设计涉及对电子器…

关于H264通过RTP传输的打包方式

Q:现在小弟初次尝试H264的编码通过RTP方式传输&#xff0c;具体实验环境的问题如下&#xff1a;环境&#xff1a;服务器端&#xff0c;H264的帧数据&#xff08;可能超过64k&#xff09;&#xff0c;分成N个1460字节的包&#xff0c;然后加上RTP头发送。客户端&#xff0c;VLC播…

AngualrJS之服务器端通信

译自《AngularJS》 与服务器通信 目前&#xff0c;我们已经接触过下面要谈的主题的主要内容&#xff0c;这些内容包括你的Angular应用如何规划设计、不同的angularjs部件如何装配在一起并正常工作以及AngularJS中的模板代码运行机制的一小部分内容。把它们结合在一起&#xff0…