zoukankan      html  css  js  c++  java
  • python四:函数练习--小白博客

    为什么要有函数?
    函数式编程定义一次,多出调用
    函数在一定程度上可以理解为变量
    函数的内存地址加上()就是调用
    函数本身也可以当做参数去传参

    不用函数:
    组织结构不清晰
    代码的重复性

    def test():#test就是函数名,里面的代码块就是值
        print('你好')
    print(test)  #函数不加(),则只返回内存地址
    
    def bar(x):#x叫形参
        print(x)
    bar('s')#s叫实参
    
    
    def foo(x, y=2):#y相当于默认值,如果传参数会把y覆盖,如果不传参数默认就是2
        print(x + y)
    foo(x=2,y=9)
    
    
    def bar(*args):
        print(args)#args返回的是一个元组,args名字可以自定义,*必须有
        print(*args)  #返回输入值
    bar(1,2,3,4,5,6,7,8,'x')
    
    
    def bar(**shenchenlin):
        print(shenchenlin)#kwargs返回的是一个字典,kwargs名字可以自定义,**是必须有的
    bar(name='申晨林', age='25')
    
    
    # return  返回,把函数的执行结果返回,return下面的代码不会执行
    def test(x, y):
        return x + y
    def bar(x,y):
        return x + y
    res = bar(test(1,2), 100)


    #监控

    # 如果c盘使用率超过10%,print(cpu使用率超过10%)

    # 如果内存使用率超过80%,print(内存使用率超过80%)

    # 如果cpu使用率超过70%,print(cpu使用率超过70%)

    import psutil
    import yagmail
    info = {}
    def disk():
        disk_total = int(psutil.disk_usage('c:')[0]/1024/1024/1024)
        disk_used = int(psutil.disk_usage('c:')[1]/1024/1024/1024)
        disk_free = int(psutil.disk_usage('c:')[2]/1024/1024/1024)
        disk_percent = psutil.disk_usage('c:')[3]
        disk_info = {
            'disk_total':disk_total,
            'disk_used': disk_used,
            'disk_free': disk_free,
            'disk_percent': disk_percent
        }
        return disk_info
    def mem():
        mem_total = int(psutil.virtual_memory()[0]/1024/1024)
        mem_free = int(psutil.virtual_memory()[1]/1024/1024)
        mem_percent = psutil.virtual_memory()[2]
        mem_used = int(psutil.virtual_memory()[3]/1024/1024)
        mem_info = {
            'mem_total': mem_total,
            'mem_free': mem_free,
            'mem_percent': mem_percent,
            'mem_used': mem_used
        }
        return mem_info
    
    def cpu():
        cpu_percent = psutil.cpu_percent(1)
        cpu_info = {
            'cpu_percent': cpu_percent
        }
        return cpu_info
    
    def sendmail(subject,contents):
        yag = yagmail.SMTP(user='18618250232@163.com', password='lizhaoqwe123123', host='smtp.163.com')
        yag.send(to='18618250232@163.com', cc='18618250232@163.com', subject=subject, contents=contents)
        yag.close()
    
    def main():
        disk_info = disk()
        mem_info = mem()
        cpu_info = cpu()
        info.update(disk_info)
        info.update(mem_info)
        info.update(cpu_info)
        msg = '硬盘总大小:%sG
    硬盘使用大小:%sG
    硬盘剩余大小:%sG
    硬盘使用率:%s%%
    内存总大小:%sM
    内存剩余大小:%sM
    内存使用率:%s%%
    内存使用大小:%sM
    cpu使用率:%s%%' % (info['disk_total'],info['disk_used'],info['disk_free'],info['disk_percent'],info['mem_total'],info['mem_free'],info['mem_percent'],info['mem_used'],info['cpu_percent'])
        if info['disk_percent'] > 80:
            sendmail('邮件报警',msg)
    
    if __name__ == '__main__':
        main()


    if __name__=='main':命令的理解与练习

    print('恋习Python')
    def main():
       print('恋习Python')
    if __name__ == '__main__':
       main()
       print('跟着菜鸟分析,练习Python越练越恋')
    其运行原理也就是:
    由于每个python模块(python文件)都包含内置的变量__name__,
    当运行模块被执行的时候,__name__等于文件名(包含了后缀.py)。
    如果import到其他模块中,则__name__等于模块名称(不包含后缀.py)。
    而“__main__”等于当前执行文件的名称(包含了后缀.py)。所以当模块
    被直接执行时,__name__ == '__main__'结果为真;而当模块被import到
    其他模块中时,__name__ == '__main__'结果为假,就是不调用对应的方法。


    # 随机生成验证码

    import random # 导入模块
    def v_code(): # 验证码一般用循环 数字和字母相平的验证码
        res="" # 验证码是字符串 首先有个初始值
        for i in range(5): #5表示验证码5个随机数
            num = random.randint(0,9) # 取到的数字
            alf = chr(random.randint(65,90) )#chr chr()函数是输入一个整数【0255】返回其对应的ascii符号
            s = str(random.choice([num, alf]))# 做字符的转换
    #res += random.choice([num, alf])  # 让字母和数字随机拼接起来,choice在s1和s2里面随机选择一个。
            res +=s # 这是上面步骤的简写
        return res # 返回的是字符串平接的结果
    print(v_code())# 调用函数

    匿名函数:没有名字函数********

    def test(x,y):
        return x+y
    res = test(1,2)
    print(res)
    
    sum = lambda x,y: x+y
    print(sum(1,2))
    info = {
        'li':2000,
        'zhao':35000,
        'wu': 25000,
        'du': 30000
    }
    
    def func(k):
        return info[k]

    #通过value比较取KEY

    res = max(info,key=func)
    print(res)
    max
    print(max(info,key=lambda k: info[k]))

    sorted排序

    print(sorted(info,key=lambda k: info[k],reverse=True))

    map映射

    name = ['zhao', 'du', 'wu']
    
    def test(name):
        return '%s_NB' % name
    
    res = map(lambda n:'%s_NB' % n, name)
    print(list(res))


    filter过滤

    name = ['zhao_NB', 'du_NB', 'wu']
    res = filter(lambda k: k.endswith('NB'), name)
    print(list(res))



  • 相关阅读:
    六个月的实习
    cookbook学习第二弹
    cookbook学习第一弹
    maketrans translate
    Python strip函数用法小结
    【翻译】How To Tango With Django 1.5.4 第一章
    os相关方法总结
    python基础(一)
    bash快捷键
    Linux基本命令
  • 原文地址:https://www.cnblogs.com/zhou2019/p/10567282.html
Copyright © 2011-2022 走看看