作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tuto...本文地址:http://www.showmeai.tech/article-detail/84声明:版权所有保留,转载请联系平台和作者并注明出处1.Python模块程序开发过程中,文件代码越来越长,维护难度越来越大。我们把很多不同的函数写成函数,放在不同的文件中,方便管理和调用。在Python中,一个.py文件被称为一个模块(Module)。使用模块可以大大提高代码的可维护性,当一个模块写好后,可以在别处引用。我们在使用python完成很多复杂的工作时,往往会参考其他的第三方模块。得益于强大的python社区,我们几乎可以有相应的方便快捷的参考库和模块来辅助我们完成任何任务。模块是一个包含您定义的所有函数和变量并以.py后缀结尾的文件。模块可以被其他程序导入和使用。下面是一个使用python标准库中的模块的示例。importsysprint('命令行参数如下:')foriinsys.argv:print(i)print('\n\nPython路径为:',sys.path,'\n')执行结果如下:$pythonusing_sys.py参数1参数2命令行参数如下:using_sys.py参数1参数2Python路径为:['/root','/usr/lib/python3.10','/usr/lib/python3.10/plat-x86_64-linux-gnu','/usr/lib/python3.10/lib-dynload','/usr/local/lib/python3.10/dist-packages','/usr/lib/python3/dist-packages']解释如下:importsys导入python标准库中的sys.py模块;这就是导入模块的方式。sys.argv是一个包含命令行参数的列表。sys.path包含Python解释器自动查找所需模块的路径列表。2.导入语句要使用一个Python模块,只要在另一个源文件中执行导入语句即可,语法如下:importmodule1[,module2[,...moduleN]当解释器遇到导入语句时,如果它在当前搜索路径如果搜索到该模块,则直接导入。搜索路径是解释器将首先搜索的所有目录的列表。如果要导入模块showmeai,需要把命令放在脚本的最前面:showmeai.pyfilecodedefprint_welcome(par):print("Welcome:",par)returntest.pyfilecode#importmoduleimportshowmeai#现在可以调用模块中包含的函数是showmeai.print_welcome("ShowMeAI")以上代码的输出:$python3test.pyWelcome:ShowMeAI当我们使用import语句时,Python解释器会寻找搜索路径中相应的模块,搜索路径是由一系列目录名组成,这些目录名是在Python编译或安装时确定的,安装新库时要修改。搜索路径存储在sys模块中的路径变量中。做一个简单的实验,在交互式解释器中,输入以下代码:>>>importsys>>>sys.path['','/usr/lib/python3.10','/usr/lib/python3.10','/usr/lib/python3.10/plat-x86_64-linux-gnu','/usr/lib/python3.10/lib-dynload','/usr/local/lib/python3.10/dist-packages','/usr/lib/python3/dist-packages']>>>sys.path输出的是路径列表,第一项是空字符串'',即python解释器执行的当前目录。我们使用以下代码创建一个fibo.py文件并将其放在sys.path中的任意目录中:deffib(n):#定义斐波那契数列a,b=0,1whileb>>importfibo可以使用模块名访问函数:3.示例>>>fibo.fib(1000)1123581321345589144233377610987>>>fibo.fib_new(100)[1,1,2,3,5,8,13,21,34,55,89]>>>fibo.__name__'fibo'对于经常使用的函数,您可以为其指定一个本地名称:>>>my_fib=fibo.fib>>>my_fib(500)11235813213455891442333774.from...import语句Python的from语句可以将模块中的指定部分导入到当前命名空间中,语法如下:frommodnameimportname1[,name2[,...nameN]]对于前例如,要导入模块fibo的fib函数,请使用以下语句:>>>fromfiboimportfib,fib_new>>>fib(500)1123581321345589144233377此语句将不会将整个fibo模块导入当前命名空间,只会导入fibo中的fib函数。5、from...import*语句也可以将一个模块的所有内容导入当前命名空间,只需要使用如下语句:frommodnameimport*比如导入模块fibo的所有函数,使用如下语句:>>>fromfiboimport*>>>fib(500)11235813213455891442333776.标准模块Python本身有一些标准模块库,有些模块直接在解析器中构建,可以很高效的使用。例如模块sys,它内置于每个Python解析器中。变量sys.ps1和sys.ps2定义了主提示符和子提示符对应的字符串:>>>importsys>>>sys.ps1'>>>'>>>sys.ps2'...'>>>sys.ps1='C>'C>print('ShowMeAI!')ShowMeAI!C>7.package是Python模块命名空间的一种管理形式,我们常用“package.module”的形式来导入模块,例如,一个模块名为C.D,那么它代表一个包C中的一个子模块D。使用这种形式不用担心不同库之间的模块名称重复。假设你想设计一组统一处理视频文件和数据的模块(或称之为“包”)。有许多不同的音频文件格式(基本上是通过后缀来区分的,例如:.mp4、.wmv、.avi、.mkv),所以你需要有一组不断增加的模块来在不同的格式之间进行转换。而对于这些视频数据,有很多不同的操作,所以你也需要一套庞大的模块来处理这些操作。下面是一个可能的包结构(在分层文件系统中):video/顶层包__init__.py初始化视频包格式/文件格式转换子包__init__.pymp4read.pymp4write.pyavireadpyaviwrite.pymkvread.pymkvwrite.pywmvread.pywmvwrite.py...音频/音效子包__init__.pyio.pyfx.pytools.py...编辑器/过滤器子包__init__.pyperiod.py更快.pyslower.py...导入包时,Python会根据sys.path中的目录查找包中包含的子目录。如果目录包含名为\_\_init\_\_.py的文件,则该目录仅被视为包。最简单的修复是放一个空的\_\_init\_\_.py文件。用户一次只能导入一个包中的特定模块,例如:importvideo.audio.io将导入子模块:video.audio.io。他必须使用全名来访问:video.audio.io.readfile(input)导入子模块的另一种方法是:fromvideo.audioimportio这也会导入子模块:io,他不需要那些冗长的前缀,所以他可以这样使用:io.readfile(input)另一种变体是直接导入一个函数或变量:fromvideo.audio.ioimportreadfile同样,这个方法会导入子模块:io,并且可以直接使用它的readfile()function:readfile(input)当使用frompackageimportitem形式时,对应的item可以是包中的子模块(subpackage),也可以是包中定义的其他名称,如functions、class或variable。导入语法首先将item视为包定义的名称,如果没有找到,则尝试将其作为模块导入。如果尚未找到,则引发exc:ImportError异常。如果我们使用importitem.subitem.subsubitem这样的导入形式,除了最后一项必须是包,最后一项可以是模块或包,但不能是类、函数或变量名。8、视频教程也可以点此查看B站带【中英文字幕】的版本https://www.bilibili.com/video...资料及代码下载本教程系列代码可在ShowMeAI下载对应的github,可以在本地python环境下运行,会科学上网的宝宝们也可以使用googlecolab来运行,一键交互学习!本系列教程涉及的Python备忘单可在以下地址下载:Python备忘单扩展参考资料Python教程-Python3文档Python教程-廖雪峰官网ShowMeAI相关文章推荐python基本数据类型python运算符python条件控制和if语句python循环语句pythonwhile循环pythonfor循环pythonbreak语句pythoncontinue语句pythonpass语句python字符串和操作pythonlistpythontuplepython字典pythonsetpython函数python迭代器和生成器Python数据结构Python模块Python文件读写Python文件和目录操作Python错误和异常处理Python面向对象编程PythonNamespaceandScopePythonTimeandDateShowMeAI系列教程推荐图Python编程:从入门到精通系列教程图解数据分析:从入门到精通系列教程ls图解AI数学基础:从入门到大师系列教程图解大数据技术:从入门到大师系列教程