python必学的包,python 基础包
在学习了面向对象和异常处理机制之后,本文将详细介绍Python中的包和模块。文中的例子会详细讲解,有兴趣的朋友可以学习一下。
00-1010 Python的包和模块包身份证是什么?如何创建包?如何创建一个小的练习包?导入模块的导入?从…导入导入子包和子包的函数调用?如何优化强大的第三方包,如何安装第三方包?大家好,在学习了面向对象和异常处理机制之后,接下来我们将学习包和模块。首先,我们要知道什么是包。什么是模块?接下来,我们将学习如何创建包、创建模块以及导入包和模块。最后,我们正在学习如何使用第三方包,这是由他人开发的包。关于包装的课程结束后,就是文件的阅读和书写。通过学习这些知识,我们可以动态地创建、编辑和阅读文档。当我们具备了基本的文件读写能力,就可以学习一些相关的模块,比如yaml文件模块,json文件和模块,日志模块。
接下来,我们将开始学习包和模块。学完这一部分,我们就可以在各个领域灵活运用Python了。比如web开发,我们可以使用web相关的包和模块。很多人都在为python做贡献,他们也在为这些包和模块做贡献。之前学的课程都是为我们学习包和模块做准备。总之,学习包和模块是学习Python的重要标志。
目录
包装的定义:简单粗暴的解释。当文件夹包含__init__时。py文件,我们可以把它想象成一个包;如果该文件夹下有子文件夹,并且还有__init__。py文件放在这个子文件夹里,我们可以把它想象成一个有包的包。模块的定义:任何*中的文件。py格式可以作为一个模块,我们可以使用import关键字导入。我们都知道每个模块都是一个Python函数,所以我们使用一个包或者模块,最终的目的是利用它们内部函数的功能来帮助我们实现我们的业务需求。
一个包中可以有一个或多个模块;它是通过调用包下模块的函数来执行的,这就是我们使用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
的方式,直接创建一个包。示意图如下:
创建包的小练习
接下来我们尝试创建一个 animal 的包,同时在 animal 包下创建一个 cat 包 和 dog 包。然后分别在 cat 包与 dog 包中创建一个 action.py 模块,并且在各自的 action.py 模块定义 eat()、jump()、run() 函数。
同样的方法在 dog 子包内创建 action.py 模块,内容如下:
# coding:utf-8def eat():
return 狗爱啃骨头
def run():
return 猫会跑
def jump():
return 猫会跳
这里我们创建了 cat 与 dog 两个子包,实际上真正有功能的是两个子包中的 action.py 模块。在这两个模块内,各有三个函数 eat()、run()、jump()。所以我们的最终目的是使用分别来自 cat 与 dog 两个子包的 action.py 模块的三个函数,接下来我们就看一下如果导入、调用这两个子包与使用子包内的函数。
包的导入 - import
如果想要使用一个 包 或者 模块 ,就需要先将其导入到我们当前的脚本中。在学习 python 脚本结构 的章节,我们曾经介绍过,在脚本的顶部为 头部注释 区域;接下来就是 导入区域 ,导入区域 就是将我们需要的包、模块导入到我们当前的脚本中。接下来 我们看一下 包的导入 import 关键字的用法:
# 用法:import package
# 参数:
# package:被导入的包的名字
# 要求:
# 只有 python 包才能被 impor 关键字捕获并导入,也就是说 python 包中必须要有 __init__.py 这个文件
# 并且 import 只会拿到当前对应包下的 __init__.py 中的功能或当前模块下的功能
关于 import 只会拿到当前对应包下的 __init__.py 中的功能或当前模块下的功能 可能不是那么好理解,接下来 我们在 Pycharm 做个小实验,加深一下理解。
首先打开 Terminal 终端,输入 python
启动 Python 解释器。然后导入 animal 包,然后使用 animal 包下的 cat子包。如下图:
这里发现报错了,属性错误 animal 里没有 cat 这个属性;这是为什么?cat 这个子包 确实在我们的 animal 包下啊。再做个小实验,我们在 animal 包下的 __init__.py 文件内书写一些内容。
然后退出我们的 python 解释器再进入,为什么要退出呢?这是因为我们的包的当前结构发生了变化,所以需要退出再重新进入,否则 在 Treminal 终端执行的仍然是之前的结果。这个时候我们再重新 import animal 的包,然后执行以下看看。
这时候在结合刚刚我们说的 import 只会拿到当前对应包下的 __init__.py 中的功能或当前模块下的功能 , 如果想要调用一个包中或者模块中的函数函数功能,只需要通过包或者模块的名称 + .
的形式去调用它的函数名就可以了。这个方法是不是和我们面向对象的使用方式很相似呢?
现在又有一个问问题了,刚刚我们导入的是 animal 包以及使用了 __init__.py 文件中的功能,那么我们我们该如何使用 animal 包下的 cat / dog 子包中的函数功能呢? 继续往下,我们看看 模块的导入 部分
模块的导入 - from…import
接下来我们学习如何通过包导入对应的模块,这一次我们需要 from
、import
两个关键字来配合了;当这两个关键字配合起来之后,就可以通过某个包找到对应的模块。接下来 我们看一下 from...import...
的用法
# 用法:from package import module
# 参数:
# package:要导入的包名
# module:包中的目标模块
# from package import module 的意思就是 从当前的包中导入某个模块
# 示例如下:
from animal import dog
dog.run()
# 通过 from ... import ... 直接找到了 dog 模块
# 所以只需要使用 dog 模块 直接用 . 的方式找到里面的 run 方法就可以执行了
接下来我们尝试 参照上文的 animal 包 导入 dog 的子包 调用里面的 run 函数,内容如下:
导入子包及子包函数的调用
这里我们发现了一个问题,两个子包下面都有 action 模块,当我们分别 导入调用的时候会被覆盖,有没有什么办法让我们同时导入两个子包的 action 模块,分别可以调用但是互不影响呢?这就需要借助到我们的as
关键字 了。 在我们学习异常的时候,利用 as
关键字 关键字将捕获的异常进行一个起别名的操作,在这里我们依然可以对我们导入的模块起别名。如下图
现在我们是直接通过导入模块来调用 action 模块下的函数,那可不可以直接调用函数来使用的呢?尝试一下:
导入主包及主包的函数调用
首先我们在主包 animal 的子包同级路径下创建一个 main.py 文件,并定义一个 main 函数,然后再进行调用。内容如下:
# coding:utf-8def animal():
return 这是一个 animal 包下子包同级路径下的模块的函数
然后我们调用该 main.py 文件的 animal 函数
导入的包与子包模块之间过长如何优化
我们来看一下 导入 animal 包下 cat 子包 的 action 模块的 eat() 函数的导入
前文我们提到过 import 只会拿到当前对应包下的 __init__.py 中的功能或当前模块下的功能 ,那么我们是否可以把 cat 与 dog 子包中的函数导入到 animal 包下的 __init__.py ?
接下来 我们尝试一下 在 animal 包 同级别下创建一个 animal_test.py 文件,然后在 animal_test.py 文件内导入 子包获取其函数。
注意:这里的 animal_test.py 脚本 需要与 animal 包处于同一级别的文件加下,才可以导入我们定义好的 __init__.py
文件的函数功能;如果不在同一个文件的级别下,导入是不成功的,大家可以自己手动试一下。
强大的第三方包
上面我们学习了什么是 python 的包,以及如何创建一个包,并通过导入的方法使用我们的包与模块。在上面对包的使用相当于是我们自己开发自己使用,属于一种自产自销的模式。而接下来我们要学习使用他人开发好的第三方包来帮助我们高效的工作,学完这一小章节我们就可以从浩瀚的第三方包选择我们需要的包来帮助我们自己完成我们想要的功能。
比如爬虫的包可以帮助我们爬取图片、文章等各种我们想要的数据;绘图的包可以帮我们对各种图片进行处理…
什么是第三方包
其实第三方包就是其他程序员公开到 Python 指定网站上写好的功能封装成包或者模块,方便其他程序员方便下载和使用。
使用第三方包最大的好处就是我们想要实现的功能可能别人已经帮助我们写好了,我们只需要拿来主义,直接应用在我们自己的代码中就可以了,这样自然就大大的提高了我们的开发效率
如何安装第三方包
了解了第三方包之后,我们需要去下载并安装他们才可以在我们的代码中使用。而 pip 与 easy_install就是获取第三方包的工具,在我们安装好python 的时候,pip 就已经自动安装好了,我们只需要在 Terminal 终端 去使用即可;
随着 python 的发展越来越快,pip 的使用率也越来越高,就逐渐的替代了 easy_install 。
我们刚刚说的 在我们安装好 python 的时候,就自动的安装了 pip 其实是有版本限制的,在 Python 3.4 版本之前是不会安装 pip 的; Python 3.4 版本之后,会自带这两种包管理工具。
如果使用的是 老版本的 python ,可以通过 https://pip.pypa.io/en/stable/installing/ 去下载安装 pip
由于 pip 管理工具中的第三方包要比 easy_install 多很多,所以我们主要介绍 pip 的使用。pip 的用法也是非常简单的,我们只需要在 Terminal 终端,输入 pip install 包名
就可以进行下载并安装。
这里也推荐大家一个 python 程序员的宝藏网站,github.com
搜索 python 第三方包 (github 会伴随程序员的完整职业生涯);在 github 有很多程序员公开出来的第三方包,自然也有 python 的。需要注意的是 github 是一个国外的网站,所以访问的有点慢,大家可以 ke
、xue
、shang
、wang
。或者也可以临时使用 国内的镜像源地址
,在下方的 pip 安装拓展
小节有介绍。
pip 安装 第三包
# 查询当前 pip 版本:pip -V
# 执行结果如下:
# pip 21.1.2 from D:\PycharmProjects\XXXXX\XXXXX\venv\lib\site-packages\pip (python 3.10)
PS:每一个版本的 python 都有自己的 pip ,所以当我们安装了多个版本的 python 后,犹豫 python 版本太多,所以如果我们使用错了 pip ,就会造成我们有的时候看着像是已经安装好了第三方包,但却无法使用的情况。所以这个地方是一定要注意的!!!
安装第一个第三方包工具 - ipython
接下来我们就尝试一下安装我们第一个第三方包 - ipython;
ipython 是一个 python 的交互式 shell ,比默认的 python shell 好用很多,支持变量自动补全,自动缩进。
在 Terminal 终端,输入 pip install ipython
,如果报错:WARNING: You are using pip version 21.1.2; however, version 22.0.4 is available.
可以通过 ke
、xue
、shang
、wang
的方式安装、或 临时使用国内镜像源地址、再或者 升级 你的 pip ;升级 命令 python -m pip install --upgrade pip
这里看到,我们安装失败了;利用我们上面说的方法 ke
、xue
、shang
、wang
的方式们再次安装
当看到 Successfully
则表示我们已经安装成功了,虽然仍提示 WARNING
让我们升级 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/
# 使用方法如下:
pip install -i http://pypi.douban.com/simple/ ipython
pip install -i http://pypi.douban.com/simple/ ipython==7.12.0 # 指定版本号安装
pip 安装第三方包的卸载
既然可以安装,那就肯定可以卸载。卸载方法如下:
# 卸载方法:pip uninstall ipython
# 这里同样需要注意,被卸载的第三方包对应的 python 解释器版本的问题。
总结
今天该章节主要介绍了什么是包,什么是模块。如何导入包、模块,导入子包、主包如何调用他们的函数。最后又讲述了如何安装、使用、卸载第三方包。
以上就是Python学习之包与模块详解的详细内容,更多关于Python包 模块的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。