找回密码
 会员注册
查看: 27|回复: 0

Python教程(九):内置模块与第三方模块

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
72033
发表于 2024-9-8 12:21:10 | 显示全部楼层 |阅读模式
目录专栏列表前言1.模块基础目录结构示例模块`mymodule.py`2.导入模块3.从模块中导入特定内容3.1`from…import*`总结:4.包示例包结构`moduleone.py``moduletwo.py``__init__.py`导入包5.模块搜索路径6.内置模块示例7.第三方库8.`__name__`属性9.初始化和清理示例10.模块的`__all__`列表总结专栏列表Python教程(一):环境搭建及PyCharm安装Python教程(二):语法与数据结构Python教程(三):字符串特性大全Python教程(四):Python运算符合集Python教程(五):理解条件语句和循环结构Python教程(六):函数式编程Python教程(七):match…case模式匹配Python教程(八):高级特性【高逼格代码】Python教程(九):内置模块与第三方模块正文开始,如果觉得文章对您有帮助,请帮我三连+订阅,谢谢💖💖💖前言前面几章的代码我们都是新建一个xxx.py文件来练习,但是随着代码越来越多,我们希望把一些代码分离出去,但是又能进行整合,这样及不会臃肿又可以让代码进行重用Python3的模块系统是其核心特性之一,它允许你将代码组织成可重用的单元。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,在Python中,一个.py文件就称之为一个模块(Module)。1.模块基础模块是Python中的一个文件,后缀.py,包含变量、函数和导入语句等。创建模块:创建一个.py文件,文件名即模块名。定义函数和变量:在模块文件中定义函数和变量。目录结构示例模块mymodule.py#!/usr/bin/envpython3#让这个文件可以直接在Unix/Linux/Mac上运行#-*-coding:utf-8-*-#文件编码设置'这是一段注释'defgreet(name):returnf"Hello,{name}!"PI=3.14159__name='ziyu'#私有变量def__getname():return__namedefarea(radius):returnPI*radius**212345678910111213141516171819202.导入模块创建module-test.py文件,使用import语句导入模块,并使用模块名访问其内容。#两层含义,1.导入了mymodule模块,2.定义了mymodule变量importmymoduleprint(mymodule.greet("张三"))print(mymodule.PI)circle=mymodule.area(5)print(circle)12345673.从模块中导入特定内容使用from关键字从模块中导入特定的函数、类或变量。frommymoduleimportgreet,PIprint(greet("Bob"))print(PI)12343.1from…import*把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:frommymoduleimport*print(greet("张三"))print(PI)12345总结:一个模块只会被导入一次,不管你执行了多少次import。类似__xxx__这样的变量是特殊变量类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等;4.包包是包含多个模块的目录,通常包含一个__init__.py文件,解决的问题是多模块中变量名冲突或者重复,包是一种管理Python模块命名空间的形式创建包:创建一个目录,目录名即包名,并在目录中创建__init__.py文件。导入包:可以导入整个包或包中的特定模块。示例包结构mypackage/__init__.pymoduleone.pymoduletwo.pypackage-test.py12345moduleone.pydefhello():return'module1'12moduletwo.pydefhello2():return'module2'12__init__.pyfrom…import*语句,把一个模块的所有内容全都导入到当前的命名空间也是可行的frommoduleoneimport*frommoduletwoimport*12导入包创建package-test.py文件,添加下面的内容importmypackageprint(mypackage.hello())print(mypackage.hello2())12345.模块搜索路径Python解释器在导入模块时会搜索模块文件,搜索路径由sys.path列表定义。查看搜索路径:打印sys.path可以查看模块搜索路径。修改搜索路径:可以通过修改sys.path来添加新的搜索路径。importsysprint(sys.path)sys.path.append('/path/to/my/modules')1236.内置模块Python提供了许多内置模块,无需安装即可使用。常用内置模块:如math、datetime、json等。示例importmathprint(math.sqrt(16))1237.第三方库第三方库是Python社区提供的扩展模块,需要安装后才能使用。安装第三方库:通常使用pip工具安装。使用第三方库:安装后即可导入使用。pipinstallrequests1importrequestsresponse=requests.get('https://api.github.com')print(response.json())12348.__name__属性模块的__name__属性用于判断模块是被直接运行还是被导入。if__name__=="__main__":print("这是模块是直接被运行的")else:print("这个模块是被导入运行的")12349.初始化和清理atexit是Python中的一个模块,它提供了一个简单的接口来注册一些函数,这些函数将在Python程序正常退出时被调用。这通常用于执行清理工作,比如保存状态、关闭文件、释放资源等。以下是atexit模块的基本用法:注册函数:使用atexit.register(func,*args,**kwargs)来注册一个函数,该函数将在程序退出时被调用。func是要注册的函数,*args和**kwargs是传递给该函数的参数。程序退出:程序可以通过多种方式退出,包括正常退出(例如使用sys.exit()或程序达到末尾)或由于异常而退出。清理操作:使用atexit模块或try...finally结构。示例使用上面创建的mypackage包来测试importmypackageimportatexitdefcleanup():print("执行清理工作...")defmain():print("程序开始执行。")#注册清理函数atexit.register(cleanup)#程序主逻辑---print(mypackage.hello())print(mypackage.hello2())if__name__=="__main__":main()123456789101112131415161718192010.模块的__all__列表__all__列表定义了模块中哪些名称会被frommoduleimport*导入。__all__=['greet','PI','Circle']1总结模块是Python代码组织的基础,通过合理使用模块,你可以编写更清晰、更可维护的代码。了解如何创建模块、导入模块、使用内置模块和第三方库是每个Python程序员的必备技能。希望这个梳理能帮助你更好地理解和使用Python3的模块系统。如果你有任何问题或需要进一步的帮助,请随时联系我们。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-10 23:07 , Processed in 1.372206 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表