【Python】新手入门:python模块是什么?python模块有什么作用?什么是python包?
🌈 个人主页:(时光煮雨)
🔥 高质量专栏:vulnhub靶机渗透测试
👈 希望得到您的订阅和支持~
💡 创作高质量博文(平均质量分95+),分享更多关于网络安全、Python领域的优质内容!(希望得到您的关注~)
🌵文章目录🌵
- 前言
- 💡一、模块
-
- 💼1.1.模块的定义
- 📁1.2.模块的作用
- 📂1.3.import 语句
- 📆1.4.模块的搜索路径
- 📉1.5.from … import 语句
- 🗃️1.6.给模块起别名
- ✉️1.7.from … import * 语句
- 📧1.8.深入模块
- 📦1.9.__name__ 属性
- 💰1.10.dir() 函数
- 🖨️1.11.标准模块
- 📝二、包
-
- 🍈2.1.包的定义
- 🍇2.2.从一个包中导入*
- 🤝期待与你共同进步
- 📚参考文档
前言
Python模块与包:构建高效代码的基石
在Python编程世界中,模块(Module)和包(Package)是组织代码的基础架构,它们如同建筑中的砖瓦,为构建可维护、可复用的软件系统提供了坚实基础。随着项目规模的扩大,合理地使用模块和包能够帮助我们:
- 实现代码复用 - 避免重复造轮子,将常用功能封装为独立模块
- 提高可维护性 - 通过逻辑分层使代码结构清晰明了
- 支持协作开发 - 不同开发者可以并行工作在各自的模块中
- 管理命名空间 - 避免命名冲突,保持代码整洁
Python的标准库本身就是由数百个精心设计的模块和包组成,它们展示了如何有效地组织代码。从简单的脚本到复杂的应用程序,理解模块和包的工作原理是每位Python开发者成长道路上的必经之路。
本章将深入探讨Python模块和包的核心概念、使用方法和最佳实践,帮助您掌握这项提升代码质量的关键技能。无论您是初学者希望理解import语句的奥秘,还是有经验的开发者想要创建自己的可分发包,这里都将为您提供实用的指导和深入的见解。
💡一、模块
💼1.1.模块的定义
在前面的几个章节中我们基本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。
为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。
Python 中的模块(Module)是一个包含 Python 定义和语句的文件,文件名就是模块名加上.py
后缀。
模块可以包含函数、类、变量以及可执行的代码。通过模块,我们可以将代码组织成可重用的单元,便于管理和维护。
📁1.2.模块的作用
代码复用
:将常用的功能封装到模块中,可以在多个程序中重复使用。命名空间管理
:模块可以避免命名冲突,不同模块中的同名函数或变量不会互相干扰。代码组织
:将代码按功能划分到不同的模块中,使程序结构更清晰。
下面是一个使用 python 标准库中模块的例子。
#!/usr/bin/python3
# 文件名: using_sys.pyimport sysprint('命令行参数如下:')
for i in sys.argv:print(i)print('\n\nPython 路径为:', sys.path, '\n')
- import sys 引入 python 标准库中的 sys.py 模块;这是引入某一模块的方法。
- sys.argv 是一个包含命令行参数的列表。
- sys.path 包含了一个 Python 解释器自动查找所需模块的路径的列表。
📂1.3.import 语句
想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下:
import module1[, module2[,... moduleN]
当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。
搜索路径时一个解释器会先进行搜索的所有目录的列表。如想要导入模块 support,需要把命令放在脚本的顶端:
#!/usr/bin/python3
# Filename: support.pydef print_func( par ):print ("Hello : ", par)return
test.py 引入 support 模块:
#!/usr/bin/python3
# Filename: test.py# 导入模块
import support# 现在可以调用模块里包含的函数了
support.print_func("Runoob")
一个模块只会被导入一次,不管你执行了多少次 import。这样可以防止导入模块被一遍又一遍地执行。
当我们使用 import 语句的时候,Python 解释器是怎样找到对应的文件的呢?
这就涉及到 Python 的搜索路径,搜索路径是由一系列目录名组成的,Python 解释器就依次从这些目录中去寻找所引入的模块。
📆1.4.模块的搜索路径
当导入一个模块时,Python 会按照以下顺序查找模块:
- 当前目录。
- 环境变量 PYTHONPATH 指定的目录。
- Python 标准库目录。
- .pth文件中指定的目录。
搜索路径是在 Python 编译或安装的时候确定的,安装新的库应该也会修改。搜索路径被存储在 sys 模块中的 path 变量,做一个简单的实验,在交互式解释器中,输入以下代码:
>>> import sys
>>> sys.path
['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']
>>>
sys.path 输出是一个列表,其中第一项是空串 ‘’,代表当前目录(若是从一个脚本中打印出来的话,可以更清楚地看出是哪个目录),亦即我们执行 python 解释器的目录(对于脚本的话就是运行的脚本所在的目录)。
因此若像我一样在当前目录下存在与要引入模块同名的文件,就会把要引入的模块屏蔽掉。
了解了搜索路径的概念,就可以在脚本中修改 sys.path 来引入一些不在搜索路径中的模块。
现在,在解释器的当前目录或者 sys.path 中的一个目录里面来创建一个 fibo.py 的文件,代码如下:
# 斐波那契(fibonacci)数列模块def fib(n): # 定义到 n 的斐波那契数列a, b = 0, 1while b < n:print(b, end=' ')a, b = b, a+bprint()def fib2(n): # 返回到 n 的斐波那契数列result = []a, b = 0, 1while b < n:result