zoukankan      html  css  js  c++  java
  • 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         内存报警邮件()
  • 相关阅读:
    URL模块之parse方法
    结合GET(),POST()实现一个简单、完整的服务器
    Node.js初探之实现能向前台返回东西的简单服务器
    float和position
    回归博客园·共享onload事件
    百度地图api的用法
    美丽数列
    低位值
    删括号
    牛牛找工作
  • 原文地址:https://www.cnblogs.com/jcici/p/8985291.html
Copyright © 2011-2022 走看看