面向对象--函数式编程


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.

原文地址:https://www.cnblogs.com/fengzaoye/p/5715205.html