Python——包和模块

简介: Python——包和模块

模块与包是任何大型程序的核心,就连Python安装程序本身也是一个包。


如何组织包,把大型模块分割成多个文件,创建命名空间包。


模块、包、库之间的概念:


       模块(module)起始就是py文件,里面定义了一些函数、类、变量等


       包(package)是多个模块的聚合体形成的文件夹,里面可以是多个py文件,也可以嵌套文件夹


       库是参考其他编程语言的说法,是指完成一定功能的代码集合,在Python中的形式就是模块和包


模块其实是一个py文件,用来封装一组功能:包是将一类模块归集到一起,比模块的概念更大一些;库就是由其他程序员封装好的功能组,一般比包的盖帘更大一些。


模块

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


定义和调用Python模块  


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


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


        def login_handler(name, password):


               correct_user_name = "python"


               correct_password = "123456"


               if  name == correct_user_name and password == correct_password:

                       print("登录成功")


               else:


                       print("用户名或者密码错误")


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


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


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


user.py 文件内容如下:


       # 导入模块


       import login


       # 现在可以调用模块里包含的函数了


       login_handler("python", "123456")


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


在user.py 页面执行控制台输出:登录成功,证明调用login.py中的方法成功。


       from ...  import ...


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


       from modname import name1[, name2[...... nameN]  ]


例如,要导入模块login 的login_hander函数


# 直接导入法


       from login import loginHandler


       login_handler("1","123")


form ...  import  *


把一个模块的所有内容全部都导入到当前的命名空间也是可行的


from  modname import *




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


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



包定义



常见的包结构如下:


       packageName


               __init__.py


               moduleName1.py


               moduleName2.py


包路径下必须存在__init__.py文件


使用Python包


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


       import 包名.包名.模块名

相关文章
|
11天前
|
存储 人工智能 运维
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
108 47
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
|
8天前
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
|
2月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
72 4
|
1月前
|
Python
Python Internet 模块
Python Internet 模块。
124 74
|
2月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
130 63
|
2月前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
2月前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
15天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
26 3
|
2月前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
12天前
|
程序员 Linux Python
python中模板和包的使用
本文介绍了 Python 模块和包的基本概念及使用方法。模块是 Python 程序结构的核心,每个以 `.py` 结尾的源文件都是一个模块,包含可重用的代码。文章详细讲解了模块的导入方式(如 `import` 和 `from...import`),模块的搜索顺序,以及如何创建和发布自己的模块。此外,还介绍了包的概念,包是包含多个模块的特殊目录,并通过 `__init__.py` 文件定义对外提供的模块列表。最后,文章简述了如何使用 `pip` 工具管理第三方模块的安装与卸载。作者:大石头的笔记;来源:稀土掘金。