zoukankan      html  css  js  c++  java
  • 面向对象--函数式编程


    1、简单语法函数

    def email(msg):

          print msg

        #发送邮件提醒
        连接邮箱服务器
        发送邮件
        关闭连接
      
    while True
      
        if cpu利用率 > 90%:
            email('CPU报警')
      
        if 硬盘使用空间 > 90%:
            email('硬盘报警')
      
        if 内存占用 > 80%:
     
     
    扩展:发送邮件实例
     
    import smtplib
    from email.mime.text import MIMEText
    from email.utils import formataddr
     
     
    msg = MIMEText('邮件内容''plain''utf-8')
    msg['From'= formataddr([发件名",'kobe@126.com'])
    msg['To'= formataddr(["收件名",'jeams@qq.com'])
    msg['Subject'= "主题"
     
    server = smtplib.SMTP("smtp.126.com"25)
    server.login("kobe@126.com""邮箱密码")
    server.sendmail('kobe@126.com', ['jeams@qq.com',], msg.as_string())
    server.quit()
     
    2、函数返回值

    def email(msg):

          print msg

        #发送邮件提醒
        连接邮箱服务器
        发送邮件
        关闭连接
         return true
    while True
      
        if cpu利用率 > 90%:
           ret =  email('CPU报警')
              if ret == True:
                  print '邮件发送成功! '
           else:
         记录日志
     
     
    返回值:
          1、返回值没制定时,默认返回none.
      2、返回值可以赋值给某个变量。
     
    3、参数
       形参,实参
    def hanshu(xingcan):
      xxxx
     
    以上函数里的"xingcan"是形参,意旨调用函数时把参数传递进函数体内进行业务处理。
     
      默认参数:
      def hanshu(moren="默认值")
     
     动态参数1:
      def fun(*args):
        print arg
      以上函数是以动态参数为参数,当调用时:
         fun(1)  结果是:(1,)  得到一个有一个元素的元组,*args表示可以传0个或多个参数,再以元组的形式在内部构造。
     
     注意的是:
        如果传的是一个元组或者列表,如:
        li = [11,22,33,44,55]
        则调用时需要如:fun(*li) ,便可得到 (11,22,33,44,55)  ,
         否则如fun(li),他结果是:
         ([11,22,33,44,55],) 他把你整个列表放在一个元组的元素里。
     
     动态参数2:
      def func(**kwargs):
        print kwargs
     连个*的参数,会在内部构架成一个字典。调用时是:func(k1=123,k2=234) 结果:{'k1':123,'k2':234}
      而传递字典进去的话,可参考上面一个*的动参,假如有字典dict ,  传进func函数里应是:func(**dict)
     
      动态参数3:
       结合以上两种动参,可得如:def func(*args,**kwargs)
       该参数可接收单值,也可接受key=value的值,可参考s.format的源码。
      
    def func(*args, **kwargs):
    
        print args
        print kwargs

    >>> s = "i am {0} ,age is {1}"
    >>> s.format(mykou,18)

    >>> s.format('mykou',18)
    'i am mykou ,age is 18'

    >>> s = 'i am {name} ,age is {age}'

    >>> s.format(name='mm',age=18)
    'i am mm ,age is 18'
    >>>

    >>> help(s.format)
    Help on built-in function format:

    format(...)
    S.format(*args, **kwargs) -> string

    Return a formatted version of S, using substitutions from args and kwargs.
    The substitutions are identified by braces ('{' and '}').

    >>>

    类似if else的三元算法

    简单的函数也有这种简单写法: lambda

    如:

    def func(arg):

         return arg+1

    等价: func = lambda arg: arg+1   调用方式一样: func(arg)

        它就是处理简单逻辑以及可以自动return.

  • 相关阅读:
    [SAP Rolling Out] Unit TEST/INTEGRATION TEST/UAT TEST/PARREL TESTING
    针式PKM与众不同的地方
    针式PKM拖动收集功能兼容所有的浏览器
    周九常:个人知识管理的三个重点领域
    关闭word文件老是说normal.dot被另外一人使用
    针式PKM初级应用:修改知识点的颜色评介
    寻找识货的人
    针式PKM中级应用如何将知识管理应用到新项目研发中
    针式PKM中级应用在10秒以内找到本月收集的任意文章
    针式PKM中级应用:知识点之间如何链接
  • 原文地址:https://www.cnblogs.com/fengzaoye/p/5715205.html
Copyright © 2011-2022 走看看