while True:
if cpu利用率 > 90%:
#发送邮件
1、连接邮箱服务器
2、发送邮件
3、关闭连接
if 内存 >50%:
#发送邮件
1、连接邮箱服务器
2、发送邮件
3、关闭连接
上面发送邮件过程都是重复的所以,没有必要都写一次。而且这样做也浪费内存。可以改成下面的方式
#定义函数def开头,当python解释器遇到def 开头的就知道是函数了就会把def后面的数据全部放到内存中并不会执行,只有调用它的时候才会执行
def 发送邮件:
1、连接邮箱服务器
2、发送邮件
3、关闭连接
while True:
if cpu利用率 > 90%:
发送邮件()
if 内存 >50%:
发送邮件()#执行方法
函数返回值:
def abc():
.....
return "123"#返回的值可以是任何东西
#调用函数,并且接受函数返回来的值。这样就可以根据不同的值来进行下一步操作
ret=abc()
普通参数:
#p,形式参数
def abc(p):
print p
return "成功"
#实际参数
ret=abc("aaaa”)
指定参数:
def abc(名字,地址,邮箱):
print 名字,地址,邮箱
#按照这样写实参的数值和形参要一致,否则值就不对了
ret=abc(abc,bj,123@qq.com)
#指定参数,这样传递的时候实参就不需要按照顺序来写了
ret=abc(邮箱=123@qq.com,地址=bj,名字=abc)
默认参数:
#这样在不写名字的时候也会获取到一个默认值MM,默认值的参数一定要放在末尾
def abc(名字="mm",地址,邮箱):
print 名字,地址,邮箱
动态参数一:
#name的类型是一个元组,等同于name=()
def abc(*name):
print name
#可以传递所有类型
abc(123,"name",[123,222],{"aa":"bb"})
动态参数二:
#name的类型是一个元组,等同于name={}
def abc(**name):
print name
abc(a1=11,a2=22)
打印结果:
{"a1":"11","a2":"22"}
动态参数三:
#1个*和2个**同时存在的时候1个*必须在2个**的前面
def abc(*con,**name):
print con,name
#这样就可以全部接受了,k1=11这样格式*num是无法接受的,只有**name可以
abc(22,33,44,k1=11,k2=22)
一般书写"*"方法,*ares,**kwargs
定义可一个函数
def f1(*argv):
print argv
li=range(5)
f1(li)#注意看这里整个列表是元组中的一个元素
([0, 1, 2, 3, 4],)
f1(*li)#如果这样传递参数效果就不一样了
(0, 1, 2, 3, 4)
字典也可以这么玩
def f1(**kwargv):
print kwargv
dic={"k1":11}
f1(dic)#这样执行是会报错的,以为它会当dic是一个值并不是一个k/v形式
f1(**dic)#这样就可以传递成功
全局变量和局部变量
#全局变量,局部变量遵循规则要大写,局部变量小写
NAME=123
def a1():
#局部变量,局部变量就是给a1局部程序用的,全局变量大家都可以使用,但是更改需要定义关键字global
a1=111
global NAME
NAME=2222#这样就可以更改全局变量