第6天:Python 模块和包

简介: 第6天:Python 模块和包

模块与包是任何大型程序的核心,就连 Python 安装程序本身也是一个包。重点涉及有关模块和包的常用编程技术,例如如何组织包、把大型模块分割成多个文件、创建命名空间包


同时,也给出了让你自定义导入语句的秘籍。


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


  • 模块(module)其实就是 py 文件,里面定义了一些函数、类、变量等
  • 包(package)是多个模块的聚合体形成的文件夹,里面可以是多个 py 文件,也可以嵌套文件夹
  • 库是参考其他编程语言的说法,是指完成一定功能的代码集合,在 Python 中的形式就是模块和包


模块其实一个 py 文件,用来封装一组功能;包是将一类模块归集到一起,比模块的概念更大一些;库就是由其它程序员封装好的功能组,一般比包的概念更大一些。下面我们来分开介绍:


模块


由上面的内容我们得知模块就是一个 py 文件,这个文本文件中存储着一组功能,方面我们再次使用的时候,提高代码的复用率。我们成这一个的一个 py 文件为  Python 模块(Module)。其他 Python 脚本中,通过 import 载入定义好的 Python 模块。


定义和调用 Python 模块


我们先来看如何定义一个 Python 模块。


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


def sayhello(  ):
   print("Hello World!")


通常我们使用 import 语句来引入模块,语法如下:



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


当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。调用的时候使用 模块名.函数名 来进行调用以上的示例为例,我们新建 do.py 文件调用 hello.py 模块中方法。do.py 文件内容如下:


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


一个模块只会被导入一次,不管你执行了多少次import。 这样可以防止导入模块被一遍又一遍地执行。

在 do.py 页面执行快捷键 ctrl+b 控制台输出:Hello World!,证明调用 hello.py 中的方法成功。这就是一个模块的定义和调用的示例,是不是也很简单。

from ... import ...

模块提供了类似名字空间的限制,允许 Python 从模块中导入指定的符号(变量、函数、类等)到当前模块。导入后,这些符号就可以直接使用,而不需要前缀模块名。

语法如下:


image.png


image.png


证明 hello 模块中的两个方法都可以直接调用,实际项目中不推荐被过多地使用。



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

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


包定义


常见的包结构如下:


image.png


使用 Python 包

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


image.png


当包名越来越长的时候效果也会越好。文中示例代码在这里:https://github.com/ityouknow/python-100-days


总结


本节给大家介绍了 Python  模块和包的使用,对 Python 工程师使用提供了支撑,模块和包的合理使用不断可以提高代码的使用效率,也可以更规范的整个工程项目的调用。

参考:

https://liam.page/2017/07/23/modules-and-packages-of-python/

目录
相关文章
|
5天前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
5天前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
16天前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
38 5
|
26天前
|
Java 程序员 开发者
Python的gc模块
Python的gc模块
|
29天前
|
数据采集 Web App开发 JavaScript
python-selenium模块详解!!!
Selenium 是一个强大的自动化测试工具,支持 Python 调用浏览器进行网页抓取。本文介绍了 Selenium 的安装、基本使用、元素定位、高级操作等内容。主要内容包括:发送请求、加载网页、元素定位、处理 Cookie、无头浏览器设置、页面等待、窗口和 iframe 切换等。通过示例代码帮助读者快速掌握 Selenium 的核心功能。
83 5
|
2月前
|
Python
SciPy 教程 之 SciPy 模块列表 6
SciPy教程之常量模块介绍:涵盖公制、二进制(字节)、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率及力学单位。示例展示了角度单位转换为弧度的几个常用常量。
20 7
|
2月前
|
Python
SciPy 教程 之 SciPy 模块列表 7
`scipy.constants` 模块提供了常用的时间单位转换为秒数的功能。例如,`constants.hour` 返回 3600.0 秒,表示一小时的秒数。其他常用时间单位包括分钟、天、周、年和儒略年。
19 6
|
1月前
|
Python
SciPy 教程 之 SciPy 模块列表 13
SciPy教程之SciPy模块列表13:单位类型。常量模块包含多种单位,如公制、二进制(字节)、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例代码展示了如何使用`constants`模块获取零摄氏度对应的开尔文值(273.15)和华氏度与摄氏度的转换系数(0.5556)。
18 1
|
1月前
|
XML 前端开发 数据格式
超级详细的python中bs4模块详解
Beautiful Soup 是一个用于从网页中抓取数据的 Python 库,提供了简单易用的函数来处理导航、搜索和修改分析树。支持多种解析器,如 Python 标准库中的 HTML 解析器和更强大的 lxml 解析器。通过简单的代码即可实现复杂的数据抓取任务。本文介绍了 Beautiful Soup 的安装、基本使用、对象类型、文档树遍历和搜索方法,以及 CSS 选择器的使用。
79 1
|
2月前
|
Python
SciPy 教程 之 SciPy 模块列表 9
SciPy教程之常量模块介绍,涵盖多种单位类型,如公制、质量、角度、时间、长度、压强等。示例展示了如何使用`scipy.constants`模块查询不同压强单位对应的帕斯卡值,包括atm、bar、torr、mmHg和psi。
15 1