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 MIMETextfrom email.utils import formataddrmsg = 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 truewhile 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.