1.模块的定义
本质上就是.py结尾的python文件,用来从逻辑上组织python代码(变量,函数,类,逻辑),为了实现一个功能。
2.模块的调用方法
首先编写一个模块文件:
1 name='Tao' 2 3 def say(): 4 print(name) 5 6 def logger(): 7 print('logger') 8 9 def login(): 10 print('login')
方法一:import module1,module2
1 print(module_test.name) 2 module_test.say()
方法二:from ... import ...
1 from module_test import say 2 say() 3 4 from module_test import logger 5 logger() 6 7 from module_test import login 8 login()
from import 与import的区别(看import后面):
a.import module_test调用时需要加模块名前缀module_test.say()。
b.from module_test import say调用时直接say()不用加模块名前缀。
方法三:from ... import ... as ...
1 from module_test import login as login_tao #调用时更改函数名 2 login_tao()
3.调用模块的本质
a.import module_test的本质
将module_test内的所有代码解释一遍统一赋值给了module_test的变量,调用的时候加上module_test的前缀。
b.from module_test import login的本质
只找login这个函数的代码,相当于把module_test模块中的login代码解释赋值给了login调用时不用加模块前缀,直接调用。
4.包(package)
定义:用来从逻辑上组织模块的,放模块的,本质是一个目录(必须带有一个__init__.py文件)。
导入包的方法:import 包名。
导入包的本质:导入包的本质就是执行pack里面的__init__.py文件,即import 包名这行代码直接执行__init__.py文件。
运用导入包的本质,即导入包的本质就是执行pack里面的__init__.py文件调用模块。通过在__init__.py文件内写入导入模块代码,可实现导入包即调用模块的功能
__init__.py文件:
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:James Tao 4 5 print('from the package') 6 7 from . import module_test#从当前目录下导入module_test,‘.’代表__init__的路径即当前目录
执行调用:
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:James Tao 4 5 #导入包的方法 6 import pack #执行__init__.py,调用module_test 7 pack.module_test.login()
5.当模块在不同级目录下时,模块的调用方法
a.调用同级文件中的module时直接from 文件名 import 模块名。
1 from pack import module_test 2 module_test.login()
b.直接加环境变量,将模块所在文件的地址加到sys.path中。
1 print(sys.path) 2 day5_DIR=os.path.dirname(os.path.abspath(__file__)) 3 pack_DIR=day5_DIR+'\'+'pack' 4 sys.path.append(pack_DIR) 5 print(sys.path) 6 7 import module_test 8 module_test.login()
6.模块导入优化
from 模块名 import 函数名
执行时直接:函数名(),节省代码,避免重复调用
7.模块的分类
a.标准库,自带模块
b.开源模块,别人写的模块
c.自定义模块,自己写的模块
代码目录结构: