在Python中有一个概念叫做模块(module),比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一下Python中的模块。
说的通俗点:模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块
变量(全局变量 局部变量 实例属性 类属性) -> 函数(实例方法 类方法 静态方法)
-> 类 -> 模块 -> 包 -> 工程(项目)
1、定义:
模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块命:test )
包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个_init_.py文件)
2、导入方法:
importmodule_nameimportmodule1_name,module2_namefrom module_alex import *(导入模块的所有变量和方法),不提倡使用,相当于把模块的代码都复制过来from module_alex importm1,m2,m3(导入模块中的方法)from module_alex import logger as logger_alex
格式: import 模块名
使用的格式:
模块名.全局变量名
模块名.函数名
模块名.类名
hm_sum.py
#如果一个模块中使用了__all__#只用在__all__的列表中的字符串才可以在其他模块中使用#条件 其他模块必须是通过from 模块名 import * 方式导入的模块
__all__ = ["name"]#全局变量
name = "加法运算"
#函数
defadd2num(a, b):return a +b#类
classPerson(object):defeat(self):print("人会吃饭")#git 或者是 svn -> 远程仓库#在自己定义一个模块中 进行自测 (程序员做的事情)
#定义一个函数 -> 自测函数
defmain():print(name)
ret= add2num(10, 20)print(ret)
p=Person()
p.eat()print(__name__) #__main__
if __name__ == '__main__':
main()
hm_test.py
#测试人员自己创建的模块#如果一个模块被另一个模块导入后 就把这个模块里面可以执行的代码都执行一遍
importhm_sumdefmain():print(hm_sum.name)
ret= hm_sum.add2num(10, 30)print(ret)
p=hm_sum.Person()
p.eat()if __name__ == '__main__':
main()
__name__在本身其模块里调用是__main__,在其它模块里调用是模块名
格式: from 模块名 import 全局变量 函数 类
from hm_sum importname, add2num, Person#使用from-import 在使用的时候 不需要在写模块名#注意和本模块的名字冲突
print(name)#def add2num(a, b):#return a - b
print(add2num(10, 20))
p=Person()
p.eat()
import 模块名 as 别名
importhm_sum as hmhm_sumprint(hmhm_sum.name)
from hm_sum importname as my_name
name= 20
print(name)print(my_name)
导入包中的模块
import 包名.模块名 as 别名
3、import本质(路径搜索和搜索路径)
导入模块的本质就是把python文件解释一遍,import test (test='test.py all code')
import module_name
module_name = all_code,把所有代码复制给module_name这个变量
调用时,模块名.变量 模块名.方法
from module_name import m1
只把这个模块中的m1放到当前位置,调用时直接使用
导入包的本质就是执行该包下的_init_.py文件,import 包名
import module_name----->module_name.py---->module_name.py的路径---->sys.path
4、导入优化
from module_test import test
5、模块的分类:
a:标准库
b:开源模块
c: 自定义模块