(十)python3 只需3小时带你轻松入门——模块与包

模块
一般情况下,是一个以.py为后缀的文件。使用import导入。我们创建一个py文件,名为myprint,该py文件作为模块,在里面定义一个函数名为myprint:

def myprint():print('这是我的print模块')

保存后,在同目录下创建一个py文件,里面使用import导入包,并且使用模块名调用我们刚刚定义的myprint.py文件中的myprint函数。

import myprint
myprint.myprint()

结果为:
在这里插入图片描述
以上代码导入模块后,使用模块名myprint调用模块中的myprint()函数,调用使用点“.”运算符。


为避免模块名冲突,python引入了按目录组织模块的方法,称之为包。包是含有python模块的文件夹。
包是比模块更大的概念,包包含了模块。
例如当前目录有一个文件夹名为bao,在bao文件夹目录下,有一个py文件,名为module,里面的内容为:

def myMouduleprint():print('这是我包里面的Moudule模块')

我们还需要在这个文件夹下新建一个py文件,名为__init__,里面什么都可以不用写。创建完毕后,我们复制这个module.py文件到上级目录。这时,这个文件夹就是一个包,这个包下可以包含多个模块。

这时新建一个py文件,名为main,我们在main里面引入包,并且也引入main.py文件同目录下的module.py模块。

包的引入使用from作为关键字,我们可以理解为from后面接我们接下来要引入的模块来自于那个包,我是在bao文件夹下存放的module模块,并且在bao文件夹下创建了一个__init__文件,这个文件放在文件夹的目录下,则代表这个这个文件夹为包。所以,from后面接我们要引入的模块来自bao这个文件夹(包),我们需要在这个文件夹下引入里面的一个模块,所以使用import,这个模块名为module所以代码写为:

from bao import module

所有代码为:

from bao import module
import modulemodule.myMouduleprint()

这时我们引入了两个module,一个是从包bao里面引入的module模块,一个是从import引入的相同目录下的module模块。之后使用module调用了里面的myMouduleprint()函数。

为了方便区分层级关系,我们首先修改外面这个模块里面的myMouduleprint()函数显示内容:

def myMouduleprint():print('这是我包外面的Moudule模块')

修改完后,我们把main文件运行,查看结果:
在这里插入图片描述
这个时候就输出的是外面的module模块的函数;这个时候就产生了同名模块冲突的问题,其实在这里两个模块都被引入了进来,但是由于重名的原因,导致module直接调用为最外层的module;我们的包可以很好的解决这种问题,我们修改from 包的引入使模块重命名,我们调用两个模块的函数,代码如下:

from bao import module as md
import modulemodule.myMouduleprint()
md.myMouduleprint()

运行结果如下:
在这里插入图片描述
使用包可以很好的区分层级关系,防止重名的问题,虽然这个例子有点牵强的解释了这个特性,但是最主要的是理解包与模块的概念。
包可以包含多个模块,但是模块就是模块,是相对于包来说最小的单位,不可再细化。

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

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

相关文章

【ArcGIS风暴】ArcGIS 10.6创建规则格网(渔网fishnet)图文经典详解

GIS中常常需要地图分幅与编号,或者需要按照规则格网(三角网、矩形网等)去批量裁剪或提取矢量和栅格数据,相关内容可以参看下面的文章。本文主要详细讲解ArcGIS10.6软件中创建渔网的方法,为地图分幅或规则裁剪做好数据准备。 ArcGIS批量裁剪提取或分幅方法总结参考文章: 《…

计算机转财经专业考试考什么,高三对口升学第三次模拟考试财经基础课计算机专业课...

商丘市三高2012-2013学年度第二学期第五次模考《计算机专业专业课》试卷一、选择题(每小题2分,共100分。)1、在Access中,建立的数据库文件的扩展名为()。(A)dbt (B)dbf (C)mdf (D)mdb2、如果“通讯录”表和“籍贯”表通过各自的“籍贯代码”字段建立了一…

linux之wget和curl如何携带cookie进行链接访问

1 问题 wget和curl如何携带cookie进行链接访问 2 解决办法 1) curl携带cookie curl --cookie "key=value" "链接地址" 这里的链接一定要加上双引号,如果链接太长,可能有问题. 如下 curl --cookie "name=zhangsan" "http://localhost…

xshell通过隧道连接_DNS安全之隧道攻击

DNS隧道攻击原理:即协议封装,IP over DNS,将其他协议封装在合法的dns请求和应答报文中,clent端通过构造特殊的域名记录请求发送数据给server,server端通过构造特殊的txt记录值来回应数据给client。其特点:请…

C#内建接口:IEquatable泛型

这节来讲一下泛型接口:IEquatable。IEquatable泛型接口处于System.Runtime命名空间下,最早在.NET Framework 2.0中发布,只有泛型版本。像之前我们讲过的IComparable,IEnumerable接口,它们属于是1.0时期的内建接口&…

联想台式计算机 不启动u盘,新电脑不识别u盘启动盘?不用送修,自己就能搞定!...

原标题:新电脑不识别u盘启动盘?不用送修,自己就能搞定!新买的电脑想要通过u盘启动来装系统,但是一些用户却遇到难题了,以为制作好u盘启动盘就能直接开机启动了。殊不知,很多新电脑都是预装的win…

Hadoop(三)通过C#/python实现Hadoop MapReduce

MapReduceHadoop中将数据切分成块存在HDFS不同的DataNode中,如果想汇总,按照常规想法就是,移动数据到统计程序:先把数据读取到一个程序中,再进行汇总。但是HDFS存的数据量非常大时,对汇总程序所在的服务器将…

python简介及环境安装

Python的创始人为荷兰人吉多范罗苏姆 。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。 Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释…

晋中学院计算机考研,晋中学院有多少人死在考研路上

晋中学院有多少人死在考研路上(2011-05-23 20:34:30)标签:日记杂谈有一句话叫作:长江后浪推前浪,前浪死在沙滩上,用来形容少年老成与故人的可怜。转眼间到了谋取出路的时候了,班上几乎所有的人都在那里嚷嚷的要考研,但…

解决ArcGIS 9.3卸载时出现invalid install.log file的方法

地信君都知道,ArcGIS 9.3 License卸载时常出现“invalid install.log file”的错误提示,而导致卸载失败,如下:

使用virt-install安装kvm虚拟机时需要的问题

使用virt-install安装kvm虚拟机时需要的问题今天在做kvm的实验时,使用virt-install安装虚拟机的过程中遇到了一些问题,其中有一个问题弄了好久都没有弄好,不过现在已经好了。由于我使用virt-install命令安装虚拟机的,其命令如下&a…

从同步函数 hello-world-dotnet 开始探索OpenFunction

OpenFunction[1] 是一个现代化的云原生 FaaS(函数即服务)框架,它引入了很多非常优秀的开源技术栈,包括 Knative、Tekton、Shipwright、Dapr、KEDA 等,这些技术栈为打造新一代开源函数计算平台提供了无限可能&#xff1…

还不会制作游戏脚本解放双手?那是你不会超强自动化框架AirTest!

最近朋友问我能不能写一个自动化,帮他解放一下双手。我想了想,在我知识里很多辅助脚本制作工具,想想那些可能会有一堆局限性,想到了Python有自动化测试游戏框架或者工具,但是一直没有了解,搜了下资料&#…

AirTest 基本使用及框架浅剖析——五分钟上手制作游戏辅助

简介 Airtest Project 是为编写自动化脚本,达到提升测试效率的一整套解决方案。它可以轻松的扩展到多平台、多引擎上;如基础的 Android和IOS手机应用、App;Windows上的应用等。 学习使用 Airtest Project 很容易,由于 Airtest P…

计算机组成原理xchg,8088数据传送指令-计算机组成原理与汇编语言-电子发烧友网站...

3.2.1 数据传送指令1. MOVOPRD1,OPRD2MOV是操作码,OPRD1和OPRD2分别是目的操作数和源操作数。该指令可把一个字节或一个字操作数从源地址传送到目的地址。源操作数可以是累加器、寄存器、存贮器以及立即操作数,而目的操作数可以是累加器、寄存器和存贮器…

Facebook用户遭遇千年虫:瞬间有了46年老友

一些Facebook用户今天碰到了一个有趣的bug,系统提示他们与好友有了46年长的好友关系。要知道,Facebook还不到15岁,很多用户也没有46岁的高龄。Facebook一直没有透露产生这个bug的原因,但它说已经意识到该问题。“我们已经确定了这…

(上)python3 selenium3 从框架实现代码学习selenium让你事半功倍

本文感谢以下文档或说明提供的参考。 Selenium-Python中文文档 Selenium Documentation Webdriver 参考 如有错误欢迎在评论区指出,作者将即时更改。 环境说明 操作系统:Windows7 SP1 64python 版本:3.7.7浏览器:谷歌浏览器浏览…

.NET 7 中的 HostApplicationBuilder

.NET 7 Preview 3 引入的 HostApplicationBuilderIntro在 .NET 6 中,ASP.NET Core 引入了 Minimal API,对于简单的应用使用 Minimal API 我们可以使用非常精简的代码来实现我们的 API,在 .NET 7 Preview 3 中,引入了一个 HostAppl…

SQL Server 2008 R2 Developer Edition图文安装教程

本文主要以截图的方式,详细说明SQL Server 2008 R2 Developer Edition的安装过程。 1、双击安装包中的setup.exe,如下图,点击“安装”→“全新安装或现有安装添加功能”。 2、点击“确定”。 3、点击“下一步”。

新款ATM恶意软件Alice 可对抗动态分析 但目前需要物理接触主机

趋势科技(Trend Micro)安全公司的研究人员警告称,新发现的恶意软件家族主要针对ATM机(自动取款机),唯一目的就是要掏空ATM机保险箱里的现金。 alice软件是什么 这款恶意软件被称为“Alice”,是迄…