Python的程序由包、模块和函数组成。包是由一系列模块组成的集合。模块时处理某一类问题的函数和类的集合。Python自带的工具包和模块安装在python的安装目录下Lib目录中。
模块的创建
一个python文件就是一个模块。模块由代码、函数或类组成。
创建一个名为“Module_test.py”文件,即定义了一个名为“Module_test”模块,该模块定义了一个最大值函数max(data)和一个类cal_averge。cal_averge类中定义求均值的函数和打印结果的方法。
“Module_test.py”文件
classcal_averge:
def__init__(self,data):
self.data=data
ifisinstance(cal_averge.Abs(data),str):
print(cal_averge.Abs(data))
else:
print("平均值为:",cal_averge.Abs(data))
defAbs(data):
iflen(data)!=:
Sum=
try:
foriindata:
Sum =Sum+i
Abs_r=Sum/(len(data))
returnround(Abs_r,4)
except:
return'数据类型或元素\
类型有误,无法计算'
else:
return'请输入数据!'
defmax(data):
data=list(data)
iflen(data)!=:
foriinrange(,len(data)+1):
try:
ifi==len(data)-1:
print('最大值为:',MAX)
break
ifdata[i]>data[i+1]:
MAX = data[i]
else:
MAX =data[i+1]
except:
print('数据类型或元素\
类型有误,无法计算')
break
else:
print('请输入数据!')
模块导入
只导入模块
importModule_test as Mt
data={1,2,2,3,4,5,6,7,8,9,10,11,14.15}
data_abs=Mt.cal_averge(data)
data_max=Mt.max(data)
out:
平均值为:6.6792
最大值为:14.15
导入模块对应的类和函数
fromModule_testimportcal_averge
fromModule_testimportmax
data={1,2,2,3,4,5,6,7,8,9,10,11,14.15}
data_abs=cal_averge(data)
data_max=max(data)
out:
平均值为:6.6792
最大值为:14.15
模块属性
__name__属性
用于判断当前模块是否是程序的入口,如果当前程序正在被使用,__name__值为”__main__”
作为主程序运行
在Module_test.py文件中写入__name__属性语句,并运行
if__name__=="__main__":
print("Module_test作为主程序运行")
else:
print("Module_test被另外一个模块调用")
out:
Module_test作为主程序运行
被另外一个模块调用
创建一个新的Module_test1.py文件,并导入Module_test模块,并运行
importModule_test
out:
Module_test被另外一个模块调用
__doc__属性
模块本身是一个对象,而每个对象都会有一个__doc__属性。该属性用于描述该对象的作用。
由于模块Module_test没有定义文档字符串,所以输出结果为None
importModule_test
print(__doc__)
out:
Module_test被另外一个模块调用
None
给模块Module_test定义文档说明“welcom to python Module!”,给类“cal_averge”定义文档说明“welcom to python Class!”后,运行Module_test1.py文件
importModule_test
print(Module_test.__doc__)
print(Module_test.cal_averge.__doc__)
out:
Module_test被另外一个模块调用
welcom to python Module!
welcom to python Class!
模块内置函数
filter函数
用法:filter(func or None,sequence)
func自定义的过滤函数
sequence待处理的序列
filter()返回的是由func()的返回值组成的序列,返回的类型与参数sequence类型相同。
函数要求参数>0,range(-5,5)列表中大于0的值为1、2、3、4,参数range(-5,5)数据类型为list,filter返回的数据类型也为list,但因python3中filter生成的是迭代器,故需用list将其转换成列表
#混合数据结构求和函数
deffunc1(*args):
L=[]
forxinargs:
ifisinstance(x,int):
ifx >:
L.append(x **2)
else:
foryinx:
ify>:
ifisinstance(y,int):
L.append(y**2)
returnL
newlist=list(filter(func1,range(-5,5)))
print('符合条件的参数:',newlist)
print('对应的值:',func1(newlist))
out:
符合条件的参数: [1,2,3,4]
参数对应的求值: [1,4,9,16]
map()函数
可以对多个序列的每个元素执行相同的操作,并组成列表返回。
用法:map(func,sequence[,sequence,…])
Func自定义的函数名
sequence待处理的序列,参数sequence的个数可以是多个
map()返回值是对序列元素处理后的列表
如自定函数func2,用map()函数重复调用自定义函数func29次,模拟打印9*9乘法表
deffunc2(x):
D=[]
foriinrange(x,10):
print("%d*%d="%(x,i),(x*i))
list(map(func2,range(1,10)))
out:
1*1=1
1*2=2
1*3=3
1*4=4
1*5=5
1*6=6
1*7=7
1*8=8
1*9=9
2*2=4
2*3=6
2*4=8
2*5=10
2*6=12
2*7=14
2*8=16
2*9=18
3*3=9
3*4=12
3*5=15
3*6=18
3*7=21
3*8=24
3*9=27
4*4=16
4*5=20
4*6=24
4*7=28
4*8=32
4*9=36
5*5=25
5*6=30
5*7=35
5*8=40
5*9=45
6*6=36
6*7=42
6*8=48
6*9=54
7*7=49
7*8=56
7*9=63
8*8=64
8*9=72
9*9=81
领取专属 10元无门槛券
私享最新 技术干货