Python-模块

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

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180401G00YJH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励