函数是什么?
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上而下实现功能,其往往用一段代码来实现指定功能,开发过程中最常见的操作就是复制粘贴,就是将之前实现的代码块复制到现需功能处,如下:
while True:
if cpu利用率 > 90%:
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接
if 硬盘使用空间 > 90%:
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接
if 内存占用 > 80%:
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接
腚眼一看上述代码,if条件语句下的内容可以被提取出来公用,如下:
def 发送邮件(内容)
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接
while True:
if cpu利用率 > 90%:
发送邮件('CPU报警')
if 硬盘使用空间 > 90%:
发送邮件('硬盘报警')
if 内存占用 > 80%:
发送邮件('内存报警')
对于上述的两种实现方式,第二种必然比第一种的重用性和可读性要好,其实这就是函数式编程和面向过程编程的区别:
· 函数式:将某功能代码封装到函数中,日后无需重复编写,仅调用函数即可
· 面向对象:对函数进行分类和封装,让开发“更快更好更强...”
函数式编程最重要的是增强代码的重用性和可读性
特性:
·减少重复代码
·使程序变得可扩展
·使程序变得易维护
定义函数
函数的定义主要有如下要点:
· def:表示函数的关键字
· 函数名:函数的名称,日后根据函数名称调用函数
· 函数体:函数中进行一系列的逻辑计算 ==》定义函数,函数体不执行,只有在调用函数的时候才会执行。
· 参数:为函数体提供数据
· 返回值:当函数执行完毕后,可以给调用者返回数据。
返回值
函数是一个功能块,该功能到底执行是否成功与否,需要通过返回值来告知调用者。
def 发送短信():
发送短信的代码...
if 发送成功:
return True
else:
return False
while True:
# 每次执行发送短信函数,都会将返回值自动赋值给result
# 之后,可以根据result来写日志,或重发等操作
result = 发送短信()
if result == False:
记录日志,短信发送失败...
注意:
1. 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,所以也可理解为return语句代表函数的结束
def f1 ():
print(123)
return "111"
print(456)
r = f1()
print r
# 输出
123
111
2. 如果未在函数中指定return,那么这个函数的返回值为None
def f2 ():
print(123)
r = f2()
print(r)
# 输出
123
None
参数
为什么要有参数?
def CPU报警邮件() #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 def 硬盘报警邮件() #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 def 内存报警邮件() #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 while True: if cpu利用率 > 90%: CPU报警邮件() if 硬盘使用空间 > 90%: 硬盘报警邮件() if 内存占用 > 80%: 内存报警邮件()