1.模块python模块是包含Python定义和语句的文件(即以.py结尾的脚本文件);文件名为模块名,文件后缀为.py;在模块内部,模块名称可通过__name__方法获得。定义模块定义模块fibo,即创建一个fibo.py文件。#fibo.py#斐波那契数列moduledeffib(n):#写斐波那契数列直到na,b=0,1whilea>>importfibo#Importmodulefibo>>>fibo.__name__#__name__方法获取模块fibo'fibo'的模块名调用模块模块名中的函数方法1。函数名称>>>importfibo>>>fibo.fib2(100)[0,1,1,2,3,5,8,13,21,34,55,89]方法2来自模块名称import函数名称1.函数名2,.....>>>fromfiboimportfib,fib2#多个函数名用逗号隔开>>>fib2(100)[0,1,1,2,3,5,8,13,21,34,55,89]方法三frommodulenameimport**表示模块中的所有函数,会导致代码可读性差(不推荐)。>>>fromfiboimport*>>>fibo.fib2(100)[0,1,1,2,3,5,8,13,21,34,55,89]给模块一个别名导入模块名称作为Alias>>>importfiboasfb>>>fb.fib2(100)[0,1,1,2,3,5,8,13,21,34,55,89]给出模块中的函数别名frommodulenameimportfunctionnameasfunctionalias>>>fromfiboimportfib2asfb2>>>fb2(100)[0,1,1,2,3,5,8,13,21,34,55,89]withExecutethemodulefibo.py#Fibonaccinumbersmoduledeffib(n):#写斐波那契数列直到na,b=0,1whilea>>importfibo>>>dir(fibo)['__builtins__','__cached__','__doc__','__file__','__loader__','__name__','__package__','__spec__','fib','fib2']以__开头和结尾的属性是python的内置属性;'fib'、'fib2'是自定义属性。导入模块是sys.path怎么理解sys.path收集了所有python模块的搜索路径,你可以自己添加搜索路径(sys.path.append('yourpath'))例如:#test.py#!/usr/bin/pythonimportsyssys.path.append('~/biosoft/')print(sys.path)>pythontest.py['/home/pylearning','/home/software/anaconda3/lib/python37.zip','/home/software/anaconda3/lib/python3.7','/home/.local/lib/python3.7/site-packages','/home/software/anaconda3/lib/python3.7/site-packages','~/biosoft/']任何python程序执行时都会搜索其导入模块的路径,首先搜索内置模块路径;然后搜索sys.path收集的路径,sys.path中的路径为:['/home/pylearning',#执行的程序test.py所在的路径'/home/software/anaconda3/lib/python37.zip','/home/software/anaconda3/lib/python3.7',#环境变量PYTHONPATH中的路径'/home/.local/lib/python3.7/site-packages',#标准库路径'/home/software/anaconda3/lib/python3.7/site-packages',#standardlibrarypath'~/biosoft/'#自己添加路径]2.Package(库)创建一个包声音包包含格式,效果,过滤三个子包。Sound/#Top-LevelPackage当文件存在时,Formats被用作包而不是目录wavread.pywavwrite.pyaiffread.pyaiffwrite.pyauwrite.pyhaha??.py...声音Surrow的效果/子包。pyReverse.pyHaha.py...Filters/Filters的分包__init__.pyEqualizer.pyVocoder.pyKaraoke.py...__init__.py文件的作用只是把__init__.py文件添加到目录中,该目录将被视为一个包而不是一个目录;__init__.py可以为空;__all__变量可以在__init__.py中设置,这个变量主要影响包的导入。上面的声音包,在sound/filters/__init__.py__all__==["equalizer","vocoder"],karaoke模块在fromsound.filtersimport*importsinglemodulefromapackageimporttheechomoduleinthesubpackageeffectsinthesoundpackage方法1importsound.effects.echo时必须使用其全名引用它,sound.effects.echo(xxx).method2fromsound.effectsimportechoreferencemethod,echo(xxx)importallmodulesfromthepackagefromsound.effectsimport*referencemethod,echo(xx)