zoukankan      html  css  js  c++  java
  • 函数--基本格式

    编程方法类型

    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()
  • 相关阅读:
    Spring事务配置的五种方式(转)
    struts.properties配置详解(转)
    Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法(转)
    php的ob函数实现页面静态化
    冒泡排序法原理讲解及PHP代码示例
    Linux Centos下编译安装Redis
    PHP判断是手机端还是PC端
    windows 下 Symfony的下载与安装
    JS在线生成二维码
    关于微信分享到朋友圈(Thinkphp-tp3.2框架下实现)
  • 原文地址:https://www.cnblogs.com/abobo/p/8035743.html
Copyright © 2011-2022 走看看