python 模块

函数

一、定义和使用函数

def 函数名(参数):

      
    ...
    函数体
    ...

函数的定义主要有如下要点:

  • def:表示函数的关键字
  • 函数名:函数的名称,日后根据函数名调用函数
  • 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
  • 参数:为函数体提供数据
  • 返回值:当函数执行完毕后,可以给调用者返回数据

1、返回值

函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。

 1 def 发送短信():
 2       
 3     发送短信的代码...
 4   
 5     if 发送成功:
 6         return True
 7     else:
 8         return False
 9   
10   
11 while True:
12       
13     # 每次执行发送短信函数,都会将返回值自动赋值给result
14     # 之后,可以根据result来写日志,或重发等操作
15   
16     result = 发送短信()
17     if result == False:
18         记录日志,短信发送失败...

2、参数

为什么有参数

 1 def CPU报警邮件()
 2     #发送邮件提醒
 3     连接邮箱服务器
 4     发送邮件
 5     关闭连接
 6 
 7 def 硬盘报警邮件()
 8     #发送邮件提醒
 9     连接邮箱服务器
10     发送邮件
11     关闭连接
12 
13 def 内存报警邮件()
14     #发送邮件提醒
15     连接邮箱服务器
16     发送邮件
17     关闭连接
18  
19 while True:
20  
21     if cpu利用率 > 90%:
22         CPU报警邮件()
23  
24     if 硬盘使用空间 > 90%:
25         硬盘报警邮件()
26  
27     if 内存占用 > 80%:
28         内存报警邮件()
29 
30 无参数实现
无参数
 1 def 发送邮件(邮件内容)
 2 
 3     #发送邮件提醒
 4     连接邮箱服务器
 5     发送邮件
 6     关闭连接
 7 
 8  
 9 while True:
10  
11     if cpu利用率 > 90%:
12         发送邮件("CPU报警了。")
13  
14     if 硬盘使用空间 > 90%:
15         发送邮件("硬盘报警了。")
16  
17     if 内存占用 > 80%:
18         发送邮件("内存报警了。")
19 
20 有参数实现
有参数

函数的有三中不同的参数:

  • 普通参数
  • 默认参数
  • 动态参数
 1 # ######### 定义函数 ######### 
 2 
 3 # name 叫做函数func的形式参数,简称:形参
 4 def func(name):
 5     print name
 6 
 7 # ######### 执行函数 ######### 
 8 #  'wupeiqi' 叫做函数func的实际参数,简称:实参
 9 func('wupeiqi')
10 
11 普通参数
普通参数
 1 def func(name, age = 18):
 2     
 3     print "%s:%s" %(name,age)
 4 
 5 # 指定参数
 6 func('wupeiqi', 19)
 7 # 使用默认参数
 8 func('alex')
 9 
10 注:默认参数需要放在参数列表最后
11 
12 默认参数
默认参数
 1 def func(*args):
 2 
 3     print args
 4 
 5 
 6 # 执行方式一
 7 func(11,33,4,4454,5)
 8 
 9 # 执行方式二
10 li = [11,2,2,3,3,4,54]
11 func(*li)
12 
13 动态参数-序列
动态参数-序列
 1 def func(**kwargs):
 2 
 3     print args
 4 
 5 
 6 # 执行方式一
 7 func(name='wupeiqi',age=18)
 8 
 9 # 执行方式二
10 li = {'name':'wupeiqi', age:18, 'gender':'male'}
11 func(**li)
12 
13 动态参数-字典
动态参数-字典
1 def func(*args, **kwargs):
2 
3     print args
4     print kwargs
动态参数-序列和字典
def show(*hehe,**hehes):
    print(hehe,type(hehe));
    print(hehes, type(hehes));

#show(11,22,"cc",apple=6000,huawei=5000);
a=(11,22,"cc");
b={"apple":6000,"huawei":5000};
show(*a,**b);

扩展:发送邮件

 1 #!/usr/bin/python env
 2 
 3 import smtplib;
 4 from email.mime.text import MIMEText;
 5 from email.utils import formataddr;
 6 
 7 
 8 def email(user):
 9     ret = True;
10     try:
11         msg = MIMEText('邮件内容', 'plain', 'utf-8');
12         msg['From'] = formataddr(["潘彪", 'pb@zhid.com']);
13         msg['To'] = formataddr(["呵呵", '5472@qq.com']);
14         msg['Subject'] = "主题";
15         server = smtplib.SMTP("smtp.ym.163.com", 25);
16         server.login("pb@zhid.com", "ggg");
17         server.sendmail('pb@zhid.com', [user, ], msg.as_string());
18         server.quit();
19     except Exception:
20         ret = False;
21     return ret;
22 
23 
24 ret = email('5472@qq.com');
25 # print(ret);
26 # ret();
27 
28 if ret == True:
29     print("邮件发送成功!");
30 else:
31     print("邮件发送失败!");
发送邮件

3、使用动态参数实现字符串格式化

s1 = "{0} is {1}";
##retsult = s1.format('heh','xixi');
l=['hehe','cici'];
retsult = s1.format(*l)
print(retsult);

s1 = "{name} is {acter}";
d = {"name":"cici","acter":"hah"};
#result = s1.format(name="cici",acter="hah");
result = s1.format(**d)
print(result);

 lambda表达式

学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即:

# 普通条件语句
if 1 == 1:
    name = 'hehe'
else:
    name = 'cici'
   
# 三元运算
name = 'hehe' if 1 == 1 else 'cici'

 对于简单的函数,也存在一种简便的表示方式,即:lambda表达式

#lambda表达式

def req(a):
    b = a+1;
    return b;
ret = req(10);
print(ret);

#创建形式参数a
#函数内容:a+1 并且把结果return
func = lambda a: a+1;

result = func(10);
print("{}".format(result));

 lambda存在意义就是对简单函数的简洁表示

 内置函数

 

 map和filter的差别

##map函数
cc = [11,22,33,44,]    #定义一个列表
aa = map(lambda x:x+100,cc)    #map函数,将cc里面的元素分别用lambda里面的表达式执行
print(list(aa))
[111, 122, 133, 144]

#用函数表示
def jia(x):
    x = x + 100;
    return x;
gg = map(jia,cc)
print(list(gg))
[111, 122, 133, 144]

#filter函数
cc = [11,22,33,44,]
def fil(m):
    if m<33:
        return True;
    else:
        return False;
rr = filter(fil,cc);
print(list(rr))
[11, 22]

详细: https://docs.python.org/3/library/functions.html#next

 1 def CPU报警邮件()
 2     #发送邮件提醒
 3     连接邮箱服务器
 4     发送邮件
 5     关闭连接
 6 
 7 def 硬盘报警邮件()
 8     #发送邮件提醒
 9     连接邮箱服务器
10     发送邮件
11     关闭连接
12 
13 def 内存报警邮件()
14     #发送邮件提醒
15     连接邮箱服务器
16     发送邮件
17     关闭连接
18  
19 while True:
20  
21     if cpu利用率 > 90%:
22         CPU报警邮件()
23  
24     if 硬盘使用空间 > 90%:
25         硬盘报警邮件()
26  
27     if 内存占用 > 80%:
28         内存报警邮件()
原文地址:https://www.cnblogs.com/jcici/p/8985291.html