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.

  • 相关阅读:
    [模板]KMP
    [BZOJ] 1833: [ZJOI2010]count 数字计数
    [BZOJ] 1563: [NOI2009]诗人小G
    [BZOJ] 2442: [Usaco2011 Open]修剪草坪
    [LOJ] #2360. 「NOIP2016」换教室
    9.18模拟赛
    [BZOJ] 2006: [NOI2010]超级钢琴
    [BZOJ] 1143: [CTSC2008]祭祀river
    [51Nod] 1218 最长递增子序列 V2
    [BZOJ] 3307: 雨天的尾巴
  • 原文地址:https://www.cnblogs.com/fengzaoye/p/5715205.html
Copyright © 2011-2022 走看看