定义函数

如何自定义函数?函数有函数名,参数,逻辑执行代码块,返回值,函数说明文档等几部分组成。

为啥要定义函数?函数就是把完成固定功能代码块,提炼一下,做一个可重复使用的功能块;方便开发过程中的维护和修改;让程序逻辑之间低耦合,让代码可以重复使用。前边使用很多次的 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

参数

一个函数可以有一个参数,可以有多个参数,也可以是不定长的;

一个函数的参数,可以有默认值;

参数的传递

参数有可更改类型,有不可更改类型;

函数的调用

调用函数,就是应用已定义的函数。

扩展训练

学习到这里,你应该已经很熟练的应用自定义函数了吧!

考虑一下,如果是监控设备上,来检查当前车速是否合法,运行的函数,应该怎么写呢?

Last updated