什么是 Python 模块?
定义和目的:
Python 中的模块是包含指定变量、类和函数的 Python 代码的文件。它通过充当相关代码的保存空间来促进模块化和代码组织。代码重用、代码可读性和项目可伸缩性都是通过模块实现的。
使用模块的好处:
1. 可重用性:在许多项目中导入和使用模块有助于减少不必要的代码。
2. 框架:模块为代码提供了一个有组织的框架,使其更易于导航和维护。
3.封装:模块通过封装可以更好地隔离代码,减少命名空间污染。
4. 协作:模块通过简化代码交换和模块化开发来鼓励开发人员协作。
5. 代码可读性:通过将相关功能组合到模块中,提高了代码可读性。
创建 Python 模块:
文件结构和命名约定:
文件结构和命名约定:建议在开发 Python 模块时遵守以下标准:
1. 为模块建立一个唯一的目录。
2. 为模块文件命名一个既有意义又信息丰富的名称。
3. 命名模块文件时,请使用小写字母和下划线(如my_module.py)。
在模块中编写代码:
要开始构建模块,请在文本编辑器或集成开发环境 (IDE) 中打开扩展名为 the.py 的新文件。任何合法的 Python 代码,例如类、变量和 import 语句的定义,都可以包含在模块中。
定义函数和变量:
“def”关键字用于在模块内声明函数。执行单个操作的语句集合包含在函数中。为了保存数据,还可以在模块中定义变量。通过导入模块,可以从其他模块或程序访问这些变量和函数。
组织类和对象:
类定义也可以包含在模块中。对象的属性(变量)和方法(函数)由类定义。类对于构建编程和生成可重用部件非常有用。
导入和使用模块:
导入模块:
必须导入一个模块才能在 Python 程序中使用它。“import”关键字用于将模块的功能添加到当前正在运行的应用程序的命名空间中。导入模块后,您可以使用模块中定义的函数、变量和类。
语法示例:
import mymodule
访问函数和变量:
使用模块名称、点 (.) 和函数或变量名称访问导入模块中的函数或变量。例如,如果一个名为“my_module”的模块有一个名为“my_function”的函数,你可以用语法“my_module.my_function()”来调用它。
示例 1:要从导入的模块访问函数,请执行以下操作:
import mymodule
mymodule.greeting("Jonathan")
输出:
Hello, Jonathan
示例 2:要从导入的模块访问变量,请执行以下操作:
请考虑以下保存在文件名 mymodule.py 中的代码:
person1 = {
"name": "John",
"age": 36,
"country": "Norway"
}
法典:
import mymodule
a = mymodule.person1["age"]
print(a)
输出:
36
模块别名:
可以使用模块别名以不同的名称引用程序中的模块。在使用名称较长的模块时,或者如果希望防止命名争议,这可能会有所帮助。使用“as”关键字,即可完成锯齿。
示例 3(参考示例 2):
import mymodule
a = mymodule.person1["age"]
print(a)
输出:
36
使用内置模块:
可以随时导入 Python 具有的任何内置模块。
示例 4:
# import standard math module
import math
# use math.pi to get value of pi
print("The value of pi is", math.pi)
输出:
pi 的值为 3.141592653589793
使用 dir() 函数:
Python 的 dir() 函数提供了在模块或对象中找到的名称列表。将显示任何可用的对象方法或模块功能。只需很少的时间来研究这些选项。
例如,如果你的模块被称为 my_module,你可以使用 dir(my_module) 来查看该模块中指定的名称列表。与此类似,使用 dir(my_object) 将显示连接到名称为 my_object 的对象的属性和方法。
例:
import math
# Using dir() with a module
module_names = dir(math)
print("Names in the math module:", module_names)
# Using dir() with an object
my_list = [1, 2, 3]
object_attributes = dir(my_list)
print("Attributes and methods of the list object:", object_attributes)
输出:
数学模块中的名称: ['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', '晶圆厂', '阶乘', '地板', 'FMOD', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', '余数', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
列表对象的属性和方法: ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
模块搜索路径和 sys.path:
在导入过程中,Python 使用指定的搜索路径来发现模块。在 Python 中导入模块时,解释器会在许多地方进行搜索。如果内置模块不存在,则搜索 sys.path 中声明的目录列表。
搜索路径是存储在 sys.path 变量中的目录名称列表。
例:
# importing sys module
import sys
# importing sys.path
print(sys.path)
输出:
['/home/nikhil/Desktop/gfg', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', “, '/home/nikhil/.local/lib/python3.8/site-packages', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages', '/usr/local/lib/python3.8/dist-packages/IPython/extensions', '/home/nikhil/.ipython']
包:
Python 模块中的包是一种以分层方式将相关模块组合在一起的技术。包是一个目录,其中包含一个特殊的__init__.py文件,该文件指示应将其作为包进行处理。软件包支持系统化的代码组织,并有助于避免命名冲突。
它们允许将大型项目有效地分解为更小、更易于管理的模块,从而改进代码维护和可重用性。
包的可能结构示例(以分层文件系统表示):
sound/ Top-level package
__init__.py Initialize the sound package
formats/ Subpackage for file format conversions
__init__.py
wavread.py
wavwrite.py
aiffread.py
aiffwrite.py
auread.py
auwrite.py
...
effects/ Subpackage for sound effects
__init__.py
echo.py
surround.py
reverse.py
...
filters/ Subpackage for filters
__init__.py
equalizer.py
vocoder.py
karaoke.py
包用户可以导入包中的单个模块,例如:
import sound.effects.echo
Python 标准库模块:
Python 标准库概述:
Python 有一组称为 Python 标准库的模块。这些模块提供多种功能,包括文件操作、网络通信、数据操作等。
常用标准模块:
1. os 和 os.path- 操作系统接口:
os 和 os.path 模块提供的操作系统接口分别提供用于与操作系统交互和处理文件路径的功能。
2. datetime- 日期和时间操作:
为了操作日期、时间和时间增量,本模块提供了类和过程。
3. 数学-数学函数:
数学模块中提供了各种算术运算,包括三角函数、对数函数和指数函数。
4. 随机数生成:
随机模块支持创建随机数、随机项目选择和随机序列随机播放。