- 了解模块
- 导入模块
- 制作模块
- ——all——
- 包的使用方法
一、模块
Python模块(Module),是一个Python文件,以.py结尾,包含了Python对象定义和Python语句。模块能定义函数,类和变量,模块里也能包含可执行的代码
导入模块的方式
- import 模块名
- from 模块名 import 功能名
- from 模块名 import *
- important 模块名 as 别名
- from 模块名 import 功能名 as 别名
import math
print(math.sqrt(9))
from 模块名 import 功能1、功能2、功能3·····
from math import sqrt
print(sqrt(9))
from math import *
print(sqrt(9))
import time as t
t.sleep(3)
print('hello')
from time import sleep as sl
sl(2)
print('world')
制作模块*
在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。自定义模块名必须要符合标识符命名规则
TestName.py
def test(a,b):
print(a+b)
#只在当前文件中调用该函数,其他导入的文件内不符合该条件,则不执行test函数调用
#name是一个系统变量,是每一个Python文件的标识符,如果name的使用位置是在自身里边,
# 那么它的的值就是__main__。如果不是自身调用,则是调用的模块名
if __name__=='__main__':
test(1,1)
myfirstPython.py
import TestName
TestName.test(2,2)
模块定位顺序
当导入一个模块,Python解释器对模块位置的搜索顺序是:
- 当前目录
- 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的目录
- 如果都找不到,Python会查看默认路径。模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录
- 注意:
自己的文件名不要和已有模块名重复,否则导致模块功能无法使用
使用from模块名和import功能的时候,如果功能名字重复,调用到的是最后定义或导入的功能
——all——
如果一个模块文件中有—all—变量,当使用from xxx import *导入时,只能导入这个列表中的元素
TestName.py
__all__=['testA']
#方括号里的testA,指的是testA函数,调用该模块时,只能调用testA
def testA():
print('testA')
def testB():
print('testB')
myfirstPython.py
from TestName import *
testA()
testB()
#到testB执行时会进行报错
包
包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字为——init——.py文件,那么这个文件夹就称为包
制作包
[New]—[Python Package]—输入包名—[ok]—新建功能模块(有联系的模块)
注意:新建包后,包内部会自动创建——init——.py文件,这个文件控制着包的导入行为
导入包
法一
import 包名.模块名
包名.模块名.目标
法二
必须在——init——.py文件中添加——all——=[ ],控制允许导入的模块列表
__all__ =['Test1']