在学习了面向对象和异常处理机制之后,本文将详细介绍Python中的包和模块。文中的例子会详细讲解,有兴趣的朋友可以学习一下。
目录
Python的包和模块包ID卡是什么?如何创建包?如何创建一个小练习包进行包创建?导入模块的导入?-from…import导入子包和子包的函数调用。如何优化强大的第三方包,如何安装第三方包?大家好,在学习了面向对象和异常处理机制之后,接下来我们将学习包和模块。首先,我们要知道什么是包。什么是模块?接下来,我们将学习如何创建包、创建模块以及导入包和模块。最后,我们正在学习如何使用第三方包,这是由他人开发的包。关于包装的课程结束后,就是文件的阅读和书写。通过学习这些知识,我们可以动态地创建、编辑和阅读文档。当我们具备了基本的文件读写能力,就可以学习一些相关的模块,比如yaml文件模块,json文件和模块,日志模块。
接下来,我们将开始学习包和模块。学完这一部分,我们就可以在各个领域灵活运用Python了。比如web开发,我们可以使用web相关的包和模块。很多人都在为python做贡献,他们也在为这些包和模块做贡献。之前学的课程都是为我们学习包和模块做准备。总之,学习包和模块是学习Python的重要标志。
什么是 Python 的包与模块
包装的定义:简单粗暴的解释。当文件夹包含__init__时。py文件,我们可以把它想象成一个包;如果该文件夹下有子文件夹,并且还有__init__。py文件放在这个子文件夹里,我们可以把它想象成一个有包的包。模块的定义:任何*中的文件。py格式可以作为一个模块,我们可以使用import关键字导入。
我们都知道每个模块都是一个Python函数,所以我们使用一个包或者模块,最终的目的是利用它们内部函数的功能来帮助我们实现我们的业务需求。
一个包中可以有一个或多个模块;它是通过调用包下模块的函数来执行的,这就是我们使用Python包或模块的目的。
包的身份证
__init__。py文件是每个python包都必须有的文件。仅当存在__init__目录时。py文件,python解释器会认为是一个包;如果没有这个文件,python解释器只会认为这是一个普通的文件夹。示意图如下:
从上图可以看出,除了__init__。py文件,包的目录文件图标有一个圆形的点图案。普通文件夹没有任何标识。想象一下,如果我们创建一个__init__,会发生什么。python_package_test文件夹中的py文件?44944…
如何创建包
其实不用多说什么了。首先,创建一个文件夹。然后创建一个python包ID文件__init__。文件夹中的py;__init__。py文件可以是空的,什么都不需要写,只要文件名是__init__.py,Python解释说这是一个包,然后我们可以在包里写任意脚本(也就是模块),非常简单。但是,我们还需要为包创建一个良好的规范:
首先,我们应该有一个主题,明确的功能,并易于使用。方便别人看名字就知道是否需要用你的包。其次,层级要清晰。一个包中可以有许多模块或子包。它们之间的关系要清晰,这也对代码的后期维护起到了很好的辅助作用。
除了上面提到的身份文件__init__。py,这是在创建文件夹之后创建的,Pycharm也可以通过new - Python Package的方式直接创建包。示意图如下:
创建包的小练习
接下来,我们尝试创建一个动物包,在动物包下创建一个猫包和一个狗包。然后,分别在猫包和狗包中创建一个action.py模块,在各自的action.py模块中定义eat()、jump()和run()函数。
同样的方法在dog子包中创建action.py模块,内容如下:
#编码:utf-8
def eat():
还‘狗爱啃骨头’
定义运行():
返回“猫会跑”
定义跳转():
返回“猫会跳”
这里,我们创建了两个子包,cat和dog。其实真正起作用的是两个子包中的action.py模块。在这两个模块中,分别有三个函数eat()、run()和jump()。因此,我们的最终目标是分别使用cat和dog子包的action.py模块中的三个函数。接下来,我们来看看如何导入和调用这两个子包,并使用子包中的函数。
包的导入 - import
如果你想使用一个包或者模块,你需要先把它导入到我们当前的脚本中。在学习python脚本结构的章节中,我们已经介绍过,脚本的顶部是头部注释区;接下来是导入区域,它将我们需要的包和模块导入到我们当前的脚本中。接下来,我们来看看包的import导入关键字的用法:
#用法:
导入包
#参数:
# package:导入的包的名称。
#要求:
impor关键字只能捕获和导入python包,这意味着必须有__init__文件。python包中的py。
#和import将只获取__init__中的函数。当前对应包下的py或当前模块下的函数。
可能不那么容易理解,导入只会得到__init__中的函数。当前对应包下的py或当前模块下的函数。接下来我们在Pycharm做一个小实验来加深理解。
首先,打开终端,输入python,启动Python解释器。然后导入动物包,再使用动物包下的cat子包。如下图:
这里发现报错了,属性不对。动物中没有猫的属性;这是为什么呢?猫,这个子包真的在我们动物包下面。让我们再做一个小实验。我们在__init__中写一些东西。动物包下的py文件。
然后退出我们的python解释器,重新进入。为什么辞职?这是因为我们的包的当前结构已经改变,所以我们需要退出并重新进入,否则前面的结果仍然会在Treminal terminal中执行。这时,我们将重新导入Animal的包,然后执行下面的来看看。
这个时候结合我们刚才说的导入,我们只会得到__init__中的函数。当前对应包下的py或当前模块下的函数。如果要调用包或模块中的函数function,只需要以包或模块名的形式调用其函数名即可。这种方法和我们面向对象的用法类似吗?
现在又有一个问题。刚才我们导入了animal包,使用了__init__中的函数。py文件。那么如何才能使用动物包下的猫/狗子包中的函数呢?接下来,让我们看看模块的导入部分。
模块的导入 - from…import
接下来,我们学习如何通过包导入相应的模块。这次需要两个关键词,from和import来配合。当这两个关键词结合起来,就可以通过某个包找到对应的模块。接下来,我们来看看from的用法.进口.
#用法:
从包导入模块
#参数:
# package:要导入的包名。
# module:包中的目标模块
# from package import module表示从当前包中导入一个模块。
#示例如下:
来自动物进口狗
dog.run()
#直接通过从找到狗模块.进口.
#所以你只需要用dog模块直接找到run方法的方式就可以了。你可以执行它。
接下来我们尝试参考上面的动物包,导入dog的子包来调用里面的run函数,内容如下:
导入子包及子包函数的调用
我们在这里发现了一个问题。两个子包下都有动作模块,我们分别导入调用时会被覆盖。我们有什么办法可以同时导入两个子包的动作模块,可以分别调用但互不影响?这需要我们的as关键字的帮助。当我们学习异常时,我们使用as关键字来给捕获的异常起别名,在这里我们仍然可以给导入的模块起别名。如下图
现在我们通过导入模块直接调用动作模块下的函数。可以直接调用函数来使用吗?试试看:
导入主包及主包的函数调用
首先我们在主包动物的子包的同级路径下创建一个main.py文件,并定义一个main函数,然后调用它。内容如下:
#编码:utf-8
def动物():
返回“这是动物包下的子包的同级路径下的模块的功能”
然后我们调用main.py文件的animal函数。
导入的包与子包模块之间过长如何优化
我们来看看动物包下的猫子包的action模块的eat()函数的导入。
我们之前提到过,import只会获取__init__中的函数。当前对应包下的py或者当前模块下的函数,那么是否可以将猫和狗子包中的函数导入__init__。动物包装下的py?
接下来,我们试着创建一个与animal包同级的animal_test.py文件,然后导入animal_test.py文件中的子包,得到它的功能。
注意:这里的animal_test.py脚本需要添加与animal包同级的文件,才能导入我们定义的__init__的函数。py文件;如果不在同一文件级别,则导入不成功。可以手动试试。
强大的第三方包
上面,我们学习了什么是python包,以及如何通过导入来创建包和使用我们的包和模块。面包的使用相当于我们自己开发使用,属于自产自销的一种模式。接下来,我们将学习使用别人开发的第三方包来帮助我们高效工作。学完这一小章,我们就可以从浩如烟海的第三方包中选择自己需要的包,帮助自己完成想要的功能。
比如一个爬虫的包,可以帮我们抓取图片、文章等我们想要的数据;绘图包可以帮助我们处理各种图片…
什么是第三方包
其实第三方包就是其他程序员在Python指定网站上编写的包或者模块,方便其他程序员下载使用。
使用第三方包最大的好处是,我们想实现的功能可能已经被别人替我们写好了。我们只需要在自己的代码中直接应用它们,自然大大提高了我们的开发效率。
如何安装第三方包
在了解了第三方包之后,我们需要下载并安装它们,然后才能在我们的代码中使用它们。Pip和easy_install是获取第三方软件包的工具。我们在安装python的时候,pip已经自动安装好了,只需要在终端使用。
随着python的发展,pip的使用率越来越高,所以逐渐取代了easy_install。
我们刚刚说了,安装python的时候,自动安装了pip。其实是有版本限制的,Python版之前不会安装pip在Python版本之后,它将附带这两个包管理工具。
如果您使用的是旧版本的python,可以通过https://pip.pypa.io/en/stable/installing/.下载并安装pip
由于pip管理工具中的第三方包比easy_install多很多,所以我们主要介绍一下pip的使用。pip的用法也很简单。我们只需要在终端输入pip安装包名称就可以下载安装了。
这里也推荐一个python程序员的宝藏网站。github.com搜索python第三方包(github将伴随程序员的整个职业生涯);github中有很多程序员暴露的第三方包,自然也有python包。需要注意的是,github是国外网站,所以访问起来有点慢。可以柯,薛,尚,王。或者你可以暂时使用国内镜像源地址,这在下面的pip安装扩展部分有描述。
pip 安装 第三包
#查询当前pip版本:
pip -V
#执行结果如下:
# pip 21.1.2来自D:\ PycharmProjects \ XXXXX \ XXXXX \ venv \ lib \ site-packages \ pip(python 3.10)
PS:python的每个版本都有自己的pip,所以当我们安装多个版本的python时,我们会犹豫python的版本太多了,所以如果我们用错了pip,就会导致我们有时候看起来像是安装了第三方的包,但却无法使用。所以一定要注意这个地方!
安装第一个第三方包工具 - ipython
接下来,我们试着安装我们的第一个第三方包——ipython;
Iphon是一个python交互式shell,比默认的python shell好用多了。它支持变量自动完成和自动缩进。
在终端输入pip install ipython,如果报错:警告:您使用的是pip版本21 . 1 . 2;但是,版本22.0.4是可用的。可以由柯、薛、尚、王安装,也可以暂时使用国内镜像源地址,或者升级你的PIP命令python -m pip安装-升级pip
在这里看到我们的安装失败;用我们上面说的方法,比如柯,薛,尚,王,再装。
当我们看到成功的时候,就说明我们已经成功安装了。虽然仍然提示警告升级pip,但我们仍然成功安装了它。看看ipython能不能正常工作。
与python自带的shell终端相比,ipython不仅交互更加便捷,还可以自动支持变量自动补全和自动缩进。凸显了人性化的极大便利。
这里还有一点需要注意。当我们的环境安装了多个版本的python时,我们必须检查我们安装的路径是否正确,否则我们将安装到其他版本的python。如下图:
当然,如果默认是进入python或者ipython的其他版本,我们可以通过python3或者ipython3的命令进入我想要进入的版本的交互终端。
注意:我们平时执行脚本的时候,还是推荐使用python解释器。ipython只是作为我们的调试环境之一。
pip 安装拓展
实际上,我们可以选择安装pip和第三方软件包。默认情况下,我们选择一个外国地址来下载和安装它们。因为网络和距离的原因,往往很慢。同时,因为网络波动,我们的安装会失败。
在这种情况下,我们国家推出了一个可以就近下载安装的地址。比如我们的清华,阿里云,中国科学技术大学,华中科技大学等等。所有都提供近源地址。如下所示:
#官方源地址
# https://pypi.python.org/simple/
# https://pypi.tuna.tsinghua.edu.cn/simple/
#国内源地址
#阿里云:http://mirrors.aliyun.com/pypi/simple/
#中国科技大学:https://pypi.mirrors.ustc.edu.cn/simple/
#豆瓣:http://pypi.douban.com/simple/
# https://pypi.tuna.tsinghua.edu.cn/simple/,清华大学
#中国科学技术大学:http://pypi.mirrors.ustc.edu.cn/simple/
#使用方法如下:
皮普安装-我http://pypi.douban.com/simple/ipython
pip-I http://pypi.douban.com/simple/ipython==7 . 12 . 0 #指定要安装的版本号。
pip 安装第三方包的卸载
既然可以安装,那肯定可以卸载。卸载方法如下:
#卸载方法:
pip卸载ipython
#这里还需要注意的是,卸载的第三方包对应的python解释器版本是有问题的。
总结
今天本章主要介绍什么是包,什么是模块。如何导入包和模块,导入子包,主包如何调用它们的函数。最后,讲述了如何安装、使用和卸载第三方软件包。
以上是Python学习包和模块的详细内容。关于Python包模块的更多信息,请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。