1.函数的理解:
在学习函数之前,一直遵循:面向过程编程:
根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下:
1 while True: 2 if cpu利用率 > 90%: 3 #发送邮件提醒 4 连接邮箱服务器 5 发送邮件 6 关闭连接 7 8 if 硬盘使用空间 > 90%: 9 #发送邮件提醒 10 连接邮箱服务器 11 发送邮件 12 关闭连接 13 14 if 内存占用 > 80%: 15 #发送邮件提醒 16 连接邮箱服务器 17 发送邮件 18 关闭连接
分析可以看出如下:
1.除了判断条件是不同之处外,所有的其他信息都是相同的。
2.能不能将这些代码归并成一个,减少重复的代码?
3.函数?
1 def 发送邮件(内容) 2 #发送邮件提醒 3 连接邮箱服务器 4 发送邮件 5 关闭连接 6 7 while True: 8 9 if cpu利用率 > 90%: 10 发送邮件(‘CPU报警‘) 11 12 if 硬盘使用空间 > 90%: 13 发送邮件(‘硬盘报警‘) 14 15 if 内存占用 > 80%:
思考如下:
1.相同之处被单独放到了一个函数里面,减少了代码量,增强了可读性。
2.是不是之后如果遇到发邮件的需求,可以直接将这个函数直接copy复用,或者调用呢?增强了复用性。
3.函数里面传了参数,参数如何用?
函数式编程和面向过程编程的区别:
- 面向过程:根据需求一行一行垒代码!代码逻辑从上往下、并且功能都是一个完了之后下一个才能执行。代码重复、不易修改重用性差!
- 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
- 面向对象:对函数进行分类和封装,让开发“更快更好更强...”
2.函数的定义:
函数式编程最重要的是增强代码的重用性和可读性。
1 def 函数名(参数): 2 3 ... 4 函数体 5 ...
函数的定义主要有如下要点:
- def:表示函数的关键字
- 函数名:函数的名称,日后根据函数名调用函数
- 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
- 参数:为函数体提供数据
- 返回值:当函数执行完毕后,可以给调用者返回数据,默认返回None。
1、返回值
函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。
1 def 发送短信(): 2 3 发送短信的代码... 4 5 if 发送成功: 6 return True 7 else: 8 return False 9 10 11 while True: 12 13 # 每次执行发送短信函数,都会将返回值自动赋值给result 14 # 之后,可以根据result来写日志,或重发等操作 15 16 result = 发送短信() 17 if result == False: 18 记录日志,短信发送失败...
2.参数
参数,参数,参数,重要的事情说三遍,但是这是啥米东西?
1 复制代码 2 3 def CPU报警邮件() 4 #发送邮件提醒 5 连接邮箱服务器 6 发送邮件 7 关闭连接 8 9 def 硬盘报警邮件() 10 #发送邮件提醒 11 连接邮箱服务器 12 发送邮件 13 关闭连接 14 15 def 内存报警邮件() 16 #发送邮件提醒 17 连接邮箱服务器 18 发送邮件 19 关闭连接 20 21 while True: 22 23 if cpu利用率 > 90%: 24 CPU报警邮件() 25 26 if 硬盘使用空间 > 90%: 27 硬盘报警邮件() 28 29 if 内存占用 > 80%: 30 内存报警邮件()
无参数示例
时间: 2024-10-18 11:38:41