文章目录
一 使用模块
模块Module是一个python文件,以.py结尾,包含了python对象定义和python语句,模块能定义函数,类和变量,模块里也能包含可执行的代码
1、导入模块的方式
1.1 import 模块名
导入时:import 模块名,调用时:模块名.功能名()
import math
print(math.sqrt(9)) # 3.0
1.2 from … import …
导入时:from 模块名 import 功能1,功能2…,调用时:功能名()
from math import sqrt
print(sqrt(9)) # 3.0
1.3 from … import *
导入时:from 模块名 import*,调用时:功能名()
from math import*
print(sqrt(9))
2、别名
as为模块或者功能定义别名,语法:import 模块名 as 别名 from 模块名 import 功能 as 别名
当定义别名后,之后只能使用别名
# 定义模块别名
import time as tt
tt.sleep(2)
print('hello') # hello
# 定义功能别名
from time import sleep as sl
sl(2)
print('hello') # hello
3、模块定位顺序
当导入一个模块,python解释器对模块位置的搜索顺序为:1、当前目录 2、如果不在当前目录,python则搜索在shell变量PYTHONPATH下的每个目录 3、如果都找不到,python会查看默认路径。
4、__all__列表
如果一个模块文件中有__all__变量,当使用from xxx import * 导入时,只能导入这个列表中的元素,即允许导入的模块或功能列表
定义一个模块
__all__ = ['testA'] # 只有__all__列表内的功能才能导入,不在内的无法导入
def testA():
print('A')
def testB():
print('B')
调用模块
from new_module import *
testA()
# testB() # 无法调用testB,未添加到__all__列表
二 安装第三方模块
三 制作模块
每一个python文件都可以作为一个模块,模块名即为文件名,要复合标识符命名规则
1、定义模块
新建python文件——new_module.py,填写内容
def sum(a, b):
print( a + b )
2、测试模块
在new_module.py中测试,__name__是系统变量,是模块的标识符,若调用时__name__在当前模块中,则为__main__,在其他导入文件内等于当前模块名;即只有在new_module.py里运行代码才执行测试文件 sum(1, 2),否则不执行
if __name__ == '__main__':
sum(1, 2)
3、调用模块
在其他py文件在中调用
import new_module
new_module.sum(2,2) # 4
四 包
包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹中创建一个名字为__init__.py文件(这是创建包后自动创建的),这个文件控制这包的导入行为
1、创建包
右键创建包mypackage,并定义两个模块my_module1.py和my_module2.py
my_module1
print(1)
def init_module1():
print('init_module1')
my_module2
print(2)
def init_module2():
print('init_module2')
2、导入包
1.1 import 包名.模块名
导入时:import 包名.模块名,调用时:包名.模块名.目标
导入mypackage中的模块my_module1
import mypackage.my_module1
mypackage.my_module1.init_module1() # 1 init_module1
1.2 from 包名 import *
导入时:from 包名 import *,调用时:模块名.目标
该方法必须在__init__.py文件中添加__all__=[],控制允许导入的模块列表
__all__=['my_module1','my_module2']
导入并调用模块
from mypackage import *
my_module2.init_module2() # 1 2 init_module2 —— 调用包内模块时,先运行__init__.py内可执行代码(无论下面有没有使用这个模块,一旦引入必先运行)
本文根据廖雪峰老师python课程和黑马程序员python课程进行记录