模块和函数是程序设计过程中,利用率最高的重要对象。模块是包含变量、函数或者类的程序文件。函数是具有特定功能的程序。
模块(函数)分为系统模块(函数)和用户模块(函数)。
用户不但可以直接使用Python提供的系统自带模块(函数),而且可以设计满足实际需要的用户定义模块(函数)。
充分利用模块及其函数是设计高质高效程序的最有效的手段。
Python的最大优势是支持大量丰富的第三方模块。
模块是包含变量、函数和类定义的程序。一个模块通常包含若干函数。在python中,不但可以直接使用系统提供的标准模块,而且可以设计适合实际应用的用户定义模块。
一、创建模块
创建模块:创建一个Python程序文件
把变量(赋值语句)、函数定义和类定义等写入一个程序文件。
例 创建包含三个变量iint=6、ireal=6.6和icom=6+6j,四个函数def wel(x)(欢迎函数)、def happy()(快乐函数)、def nar(i,j,k)(水仙花数函数)和def rose(i,j,k,l)(四叶玫瑰数函数)写入模块imod.py。
#imod.py pro0910.py
iint=6
ireal=6.6
icom=6+6j
def wel(x):
print('welcome...,',x)
def happy():
print('Happy You!')
def nar(i,j,k):
if i*i*i+j*j*j+k*k*k==i*100+j*10+k:
return i*i*i+j*j*j+k*k*k
else:
return -1
def rose(i,j,k,l):
if i*i*i*i+j*j*j*j+k*k*k*k+l*l*l*l==i*1000+j*100+k*10+l:
return i*i*i*i+j*j*j*j+k*k*k*k+l*l*l*l
else:
return -1
在完成模块文件的建立之后,需要把模块文件(如:imod.py)放到Python的一个搜索路径(默认:…Python36\lib)中。
如果不知道当前的搜索路径,则可以使用如下方法查看:
import sys
sys.path
>>> import sys
>>> sys.path
运行如下语句,验证imod.py是否可以使用
>>> import imod
>>> print(imod.iint,imod.ireal,imod.icom)
6 6.6 (6+6j)
>>> imod.happy()
Happy You!
>>> print(imod.happy())
Happy You!
None
>>> imod.wel('Marry')
'welcome..., Marry!'
>>> print(imod.wel('Marry'))
运行如下语句,验证imod.py是否可以使用
welcome..., Marry!
>>> print(imod.nar(1,5,3))
153
>>> print(imod.nar(1,5,2))
-1
>>> print(imod.rose(8,2,0,8))
8208
>>> print(imod.rose(8,2,0,9))
-1
不难看出,模块imod.py可以使用。
二、使用模块
使用模块,可以使用import,把模块导入到当前的程序中
import 模块[,模块,…,模块]:导入一个(或多个)模块。
import 模块 as 新名:按照新名导入模块。
from 模块 import *:导入模块。使用时,可以省略模块名前缀。
from 模块 import 对象:从模块中导入对象。
from 模块 import 对象 as 新名:按照新名,从模块中导入对象。
例如:验证如下语句。分析import的用法。
>>> import imod
>>> print(imod.icom)
(6+6j)
>>> import imod as im
>>> print(im.icom)
(6+6j)
>>> from imod import *
>>> print(icom)
(6+6j)
>>> from imod import icom
>>> print(icom)
(6+6j)
>>> from imod import icom as ic
>>> print(ic)
(6+6j)
导入模块之后,可以使用dir(),查看模块属性。
>>> import imod
>>> dir(imod)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'happy', 'icom', 'iint', 'ireal', 'nar', 'rose', 'wel']
不难看出,模块imod中,除了包含变量和函数之外,还包含若干以双下划线开始和结束的模块的全程变量,为用户提供模块的相关信息。如:__doc__、__file__、__name__、__package__和 、__loader__等。
例如:验证如下语句。分析模块全程变量的用法和信息。
>>> imod.__builtins__
{'__name__': 'builtins',
……,
'_': None}
>>> imod.__cached__
'D:/Python36/Lib\\__pycache__\\imod.cpython-36.pyc'
>>> imod.__doc__
>>> imod.__file__
'D:/Python36/Lib\\imod.py'
>>> imod.__loader__
<_frozen_importlib_external.SourceFileLoader object at 0x0000021416626F98>
>>> imod.__name__
'imod'
>>> imod.__package__
''
>>> imod.__spec__
ModuleSpec(name='imod', loader=<_frozen_importlib_external.SourceFileLoader object at 0x0000021416626F98>, origin='D:/Python36/Lib\\imod.py')
>>> imod.happy()
Happy You!
显然,通过查看属性,可以帮助用户详细的了解模块中的变量、函数和类等信息。从而帮助用更好的使用模块。
思考:导入sys,os,time,datetime等模块,并查看其属性。
对于导入的模块,在详细了解了模块中的变量、函数和类等之后,就可以按照前述的程序设计方法和后续的类使用方法,来使用模块,从而完成用户自己的程序设计,进而实现相应的数据处理与分析。
例5.20 利用模块imod.py,完成如下任务:
(1)计算并输出三个变量的和值。
(2)输入姓名,输出对他的欢迎和快乐问候。
(3)输出所有水仙花数。
(4)输出所有四叶玫瑰花数。
#pro0520.py
import imod
s=input('输入姓名:')
s=imod.wel(s)
print(s)
imod.happy()
v=imod.iint+imod.ireal+imod.icom
print('Sum=',v)
print('水仙花数:')
for i in range(100,1000):
t=str(i)
if imod.nar(int(t[0]),int(t[1]),int(t[2]))==-1:
continue
else:
print(imod.nar(int(t[0]),int(t[1]),int(t[2])),end=' ')
print()
print('四叶玫瑰花数:')
for i in range(1000,10000):
t=str(i)
if imod.rose(int(t[0]),int(t[1]),int(t[2]),int(t[3]))==-1:
continue
else:
print(imod.rose(int(t[0]),int(t[1]),int(t[2]),int(t[3])),end=' ')
print()

