Python_模块和包
1.模块
模块:是一个Python文件,以.py结尾,包含了Python对象定义和Python语句;模块能定义函数,类和变量,模块里也能包含可执行的代码
2.导入模块
2.1 import 模块名
语法:
import math
print(math.sqrt(9)) #3.0
2.2 from 模块名 import 功能
语法:
from math import sqrt
print(sqrt(9)) #3.0
2.3 from 模块名 import
语法:
from math import *
print(sqrt(9)) #3.0
2.4 as定义别名
语法:
# 模块别名
import time as tt
tt.sleep(3)
print('hello')
# 功能别名
from time import sleep as sl
sl(2)
print('hello')
3.制作模块
注意:自定义模块名必须要符合标识符命名规则
3.1 测试模块
my_moudle1模块代码:
def add(a,b):
print(a+b)
# 测试功能
# add(1,2) #3
# print(__name__) #__main__
# __name__是系统变量,是模块标识符,值是:如果是自身模块值是__main__,否则值是当前模块的名字
if __name__=='__main__':
add(1,2) #3
导入模块的文件代码:
# 导入模块
import my_moudle1
# 调用模块
my_moudle1.add(1,6) #7
# print(__name__) #my_moudle1
4. 模块定位顺序
注意
(1)自己的文件名不要和已有模块名重复,否则导致模块功能无法使用(python解释器对模块位置的搜索顺序先是当前目录)
(2)当使用from XX import 功能导入模块功能时,如果功能名字重复,调用到的是最后定义或导入的功能
正常运行:
def sleep():
print('自定义')
from time import sleep
sleep(3)
报错:
from time import sleep
def sleep():
print('自定义')
sleep(3)
5. all列表
Python_1模块代码:
# 如果一个模块文件中有__all__变量,当使用from XX import *导入时,只能导入这个列表中的元素
__all__=['testA']
def testA():
print('testA')
def testB():
print('testB')
导入模块的代码:
from Python_1 import *
testA() #testA
# testB() #报错
6. 包
包:将有联系的模块组织在一起,将其放到同一个文件夹下,并且在这个文件夹创建一个名字为_init_.py文件,那么这个文件夹就称之为包
6.1 导入包
方法一:
# 导入包
import mypackage.my_moudle1
# 调用模块
mypackage.my_moudle1.info_print()
方法二:
注意:需要在_init_.py文件中设置all列表,添加的是允许导入的模块
_init_列表:
__all__=['my_moudle1']
导入模块的代码:
from mypackage import *
my_moudle1.info_print()