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.

  • 相关阅读:
    Angular6在自定义指令中使用@HostBingDing() 和@HostListener()
    升级到Angular6后对老版本的RXJS代码做相应的调整
    关于Angular6版本升级和RXJS6新特性的讲解
    ANGULAR 使用 ng build --prod 编译报内存错误的解决办法
    在js内生成PDF文件并下载的功能实现(不调用后端),以及生成pdf时换行的格式不被渲染,word-break:break-all
    在js中获取页面元素的属性值时,弱类型导致的诡异事件踩坑记录,
    前端使用mobx时,变量已经修改了,为什么组件还是没变化,map类型变量,对象类型变量的值获取问题(主要矛盾发生在组件使用时)
    在Java中发送http的post请求,设置请求参数等等
    spring定时任务注解@Scheduled的记录
    js获取dom元素的子元素,父元素,兄弟元素小记
  • 原文地址:https://www.cnblogs.com/fengzaoye/p/5715205.html
Copyright © 2011-2022 走看看