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

举报
1_bit 发表于 2021/04/20 00:48:34 2021/04/20
【摘要】 模块 一般情况下,是一个以.py为后缀的文件。使用import导入。我们创建一个py文件,名为myprint,该py文件作为模块,在里面定义一个函数名为myprint: def myprint(): print('这是我的print模块') 12 保存后,在同目录下创建一个py文件,里面使用import导入包,并且使用模块名调用我们刚刚定义的myprint.py文...

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

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

  
 
  • 1
  • 2

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

import myprint
myprint.myprint()

  
 
  • 1
  • 2

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


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

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

  
 
  • 1
  • 2

我们还需要在这个文件夹下新建一个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

  
 
  • 1

所有代码为:

from bao import module
import module

module.myMouduleprint()

  
 
  • 1
  • 2
  • 3
  • 4

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

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

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

  
 
  • 1
  • 2

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

from bao import module as md
import module

module.myMouduleprint()
md.myMouduleprint()

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

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

文章来源: blog.csdn.net,作者:1_bit,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/A757291228/article/details/105609227

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。