函数--基本格式

编程方法类型

1、面向对象:以类为主要思路,定义的关键字class
2、面向过程:以过程为主的思路,定义的关键字为def
3、函数式编程:(最早)以函数为主要思路,定义的关键字为def
注意:过程和函数的区别就是:过程没有return
 

函数式编程的优势

1、减少代码的重复使用:
2、方便代码的可扩展性:
3、方便调整整体代码:

背景:

在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下:

 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         关闭连接

通过上述代码可以判断,if条件语句下的内容可以被提取出来公用,如下:

 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 def 函数名(参数):
2     .....
3     函数体(功能脚本)
4     .....
5     返回值

函数的定义特点

1、def:表示创建函数的关键字。
2、函数名:函数的名称,日后根据函数名调用函数。
3、(参数):为函数体提供数据。
4、函数体:函数中进行一系列的逻辑计算,如:发送邮件,计算出[11,22,33,44,55]中最大的数等。。。。
5、返回值:函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。

 

函数的主要作用:把一个功能放到一个函数里,并起好名称,将来可以进行调用。

发送邮件函数

 1 #!/usr/bin/env python
 2 # -*- coding:utf8 -*-
 3 # Author:Dong Ye
 4 
 5 def sendmail():
 6     import smtplib
 7     from email.mime.text import MIMEText
 8     from email.utils import formataddr
 9 
10     msg = MIMEText ('第一次玩邮件测试,骚扰下,请见谅','plain','utf-8')
11     msg['From'] = formataddr(["系统告警",'abobo1984@126.com'])
12     msg['To'] = formataddr(["dongye",'wulicheng@gomeholdings.com'])
13     msg['To'] = formataddr(["dongye",'dongye@gomeholdings.com'])
14     msg['subject'] = "告警邮件"
15 
16     server = smtplib.SMTP("smtp.126.com",25)
17     server.login("abobo1984@126.com",'abiao555')
18     server.sendmail('abobo1984@126.com',['wulicheng@gomeholdings.com','dongye@gomeholdings.com',], msg.as_string())
19     server.quit()
20 sendmail()
原文地址:https://www.cnblogs.com/abobo/p/8035743.html