定义函数
如何自定义函数?函数有函数名,参数,逻辑执行代码块,返回值,函数说明文档等几部分组成。
为啥要定义函数?函数就是把完成固定功能代码块,提炼一下,做一个可重复使用的功能块;方便开发过程中的维护和修改;让程序逻辑之间低耦合,让代码可以重复使用。前边使用很多次的 print
, 就是一个打印函数。
Lukas他们一家去巽寮湾旅行,他们现在在高速上,驾车通过惠深沿海高速,去惠州巽寮湾旅游;惠深沿海高速,深圳段限速[80]公里/小时;惠州段限速[120]公里/小时,但惠州段最低限速[60]公里/小时;Lukas在路上看到了一个救护车,以[125]公里每小时的速度飞驰而过,Lukas想让爸爸开快点,早一点去海边玩,不知道可以吗?
常用的功能块,做成一个函数,就可以重复使用了;就想造汽车,那个轮子过来就能用了,不用自己去造轮子。为啥他们都说“人生苦短,我学Python”。就是因为Python的轮子特别多,直接拉过来就能用了。
我们把判断高速运行速度是否合法,写一个自己的函数来检查[惠深沿海高速,深圳段限速[80]公里/小时;],怎么样?
'''
Welcome to LearnPython.NET
File Name: PDataType.py
Download from:https://www.learnpython.net/cn/python-code-samples.html
Author: LearnPython.Net
Editor: CoderChiu
'''
#检查速度是否合法(小于等于80KM/H合法);
def ExpresswaySpeedCheckinShenZhen(nSpeed):
if nSpeed <= 80 :
#返回 True表示合法;
return True
else:
#返回 False表示非法;
return False
#当然速度79,检查是否合法;
print(ExpresswaySpeedCheckinShenZhen(79))
执行结果,显示深圳段显示,当前车速79KM/H是合法。
>>> %Run PDefFunction.py
True
继续完善[惠州段限速[120]公里/小时,但惠州段最低限速[60]公里/小时],重新定义一个新的函数;
#检查速度是否合法(60~120KM/H合法);
def ExpresswaySpeedCheckinHuiZhou(nSpeed):
if (nSpeed >= 60) and (nSpeed <= 120) :
#返回 True表示合法;
return True
else:
#返回 False表示非法;
return False
#当然速度120,检查是否合法;
print(ExpresswaySpeedCheckinHuiZhou(120))
执行结果,在惠深沿海高速,Lukas他们家以120KM/H的速度,是合法。
>>> %Run PDefFunction.py
True
还有个问题,检查救护车是否合法,怎么处理呢?
from enum import Enum
#定义车辆的类型;
class VehicleType(Enum):
Car = 1
Ambulance = 2
#定义路段
class ExpresswayLocation(Enum):
ShenZhen = 1
HuiZhou = 2
先定义一个枚举类型
VehicleType
,表示车辆类型;再定义一个枚举类型 ExpresswayLocation
, 表示位置信息。
#救护车、小汽车;
def ExpresswaySpeedCheck(nSpeed, enumCarType, enumLocation):
if enumCarType == VehicleType.Ambulance:
return True
else:
if enumLocation == ExpresswayLocation.ShenZhen:
return ExpresswaySpeedCheckinShenZhen(nSpeed)
elif enumLocation == ExpresswayLocation.HuiZhou:
return ExpresswaySpeedCheckinHuiZhou(nSpeed)
else:
return False
#小汽车当然速度79,运行在深圳,检查是否合法;
print(ExpresswaySpeedCheck(79, VehicleType.Car, ExpresswayLocation.ShenZhen))
#小汽车当然速度120,运行在惠州,检查是否合法;
print(ExpresswaySpeedCheck(120, VehicleType.Car, ExpresswayLocation.HuiZhou))
#救护车当然速度160,运行在惠州,检查是否合法;
print(ExpresswaySpeedCheck(160, VehicleType.Ambulance, ExpresswayLocation.HuiZhou))
执行结果,显示在深圳段,小汽车79KM/H是合法的;小汽车在惠州段120KM/H也是合法的;救护车在惠州段160KM/H也是合法的。
>>> %Run PDefFunction.py
True
True
True
参数
一个函数可以有一个参数,可以有多个参数,也可以是不定长的;
一个函数的参数,可以有默认值;
参数的传递
参数有可更改类型,有不可更改类型;
函数的调用
调用函数,就是应用已定义的函数。
扩展训练
学习到这里,你应该已经很熟练的应用自定义函数了吧!
考虑一下,如果是监控设备上,来检查当前车速是否合法,运行的函数,应该怎么写呢?