python3模块
1、类和函数的管理
如果只是少数的类或函数,可以将其写入到一个py文件中,相互之间直接使用即可。
但是,通常的项目往往涉及到非常多的类和函数,将其写入到一个py文件中是不适宜的,太过繁杂,且不便进行管理。
python中支持模块和包机制进行管理。
- 模块:一个py文件即可称为一个模块,其中可以定义关系紧密的类和函数。
- 包:py文件由可以由一层或多层文件夹进行组织管理,将这里的文件夹称之为包。
python中并不强调库。实际上,一般并不严格区分模块、包和库的定义,重点是掌握使用
2、导入
如果一个py文件中要使用其它py文件中声明的类或函数,则需要进行导入。
(1)import
import a.b
a.b.fun()
- 直接使用import导入,必须是直接导入某py文件,而不能是某包。且使用时需要完整的py文件路径,比如是a.b而非b
import a.b as ab
ab.fun()
- 使用as关键词,可以设置快捷名,以便使用
(2)from ... import
from a import b
b.fun()
- 用于导入指定py文件,如果有多个,可以用,分隔
from a.b import *
fun()
- 导入某整个py文件
3、导入事项
(1)一个模块只会被导入一次,不管你执行了多少次import
。这样可以防止导入模块被一遍又一遍地执行。
(2)搜索路径被存储在sys模块中的path变量,python解释器会据此进行查找import导入的包。
import sys
print(sys.path)
(3)如果同名的函数或类在不同的模块中声明,且被同时引入,如果是直接使用函数或类,则实际使用的是后声明的。可以通过包名和模块名进行区分
4、__name__属性
一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。
if __name__=='__main__':
pass
5、dir函数
内置的函数 dir() 可以找到模块内定义的所有名称。
如果没有给定参数,那么 dir() 函数会罗列出当前定义的所有名称.
import sys
print(dir(sys))
6、标准模块
由python本身所提供的标准的模块
7、使用
实际上,并不建议直接使用import或者from import *。
一方面引入过多未使用的子模块是占用资源,另一方面多个模块这么声明,很容易造成命名冲突。
显示的报错冲突还好,就怕隐性的错用,在项目开发和测试过程中未发现,但上线后造成业务问题或安全问题。
更好的操作是:导入子模块,在代码中使用模块名.类名或函数名进行操作。或者导入具体的子模块中的类或函数。