zoukankan      html  css  js  c++  java
  • python-装饰器及一些常用内置函数

    ---恢复内容开始---

    装饰器

    装饰器定义:装饰器的本质就是闭包,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能
    装饰器的好处:可以在不改变源码的情况下进行添加功能,测试函数的执行效率
    装饰器的应用:权限检验的时候,插入日志,性能测试等

    例:装饰器中的语法糖

    #用装饰器查看一下函数的执行时间
    import time                 #调出一个查看时间的模块
    def timmer(f):              #先定义一个装饰器的名字
        def inner():
            start_time = time.time()    #起始时间
            time.sleep(1)               #睡一秒
            f()
            end_time = time.time()      #结束时间
            print(end_time-start_time)  #结束时间-起始时间
    
        return inner
    @timmer #func=timmer(func)    被装饰的函数=装饰器的名字(被装饰的函数)   
    def func():
        print('我是被装饰的函数啦~~~')
    func()

    常用的一些内置函数

    内置函数就是python给我提供的一些方法(工具),拿上直接可以用的,例如我们的input(),print(),type(),len()等,
    截止python3.6.2版本,一共给我们提供了68个内置函数.



    特别的匿名函数

    语法:

    
    

      函数名 = lambda 参数:返回值

    
    

    注意:

    
    

      1.函数的参数可以有多个,多个参数之间用逗号隔开

    
    

      2.匿名函数不管多复杂.只能写一行.且逻辑结束后直接返回数据

    
    

      3.返回值和正常的函数一样,可以是任意数据类型,但是只能一个,不能返回多个.

    
    

    匿名函数并不是说一定没有名字,这里前面的变量就是一个函数名,说他是匿名原因是我们通过

    
    

    name查看的时候是没有名字的.统一都叫做lambda.在调用的时候没有什么特别之处

    
    

    像正常的函数调用既可


    例:
    #先上一个不用匿名函数哒
    def func(n):
        return n*n
    print(func(6))
    #结果 36
    
    #其实给lambda就是来定义一个匿名函数的,如果要给它起个名字的话 有点画蛇添足了
    f = lambda x:x*x
    print(f(4))
    
    # 结果 16
    排序函数sorted
    
    
    语法:sorted(iterable,key=None,reverse=False)
    iterable : 可迭代对象

    key: 排序规则(排序函数),在sorted内部会将可迭代对象中的每一个元素传递给这个函数的参数.根据函数运算的结果进行排序
    reverse :是否是倒叙,True 倒叙 False 正序
     
    
    
    #按照元素长度排序
    lst = ['新白娘子传奇','康熙微服私访记','铁齿铜牙纪晓岚','还珠格格']
    def func(s):
        return len(s)
    print(sorted(lst ,key=func))
    #结合lambda匿名函数使用
    lst = ['新白娘子传奇','康熙微服私访记','铁齿铜牙纪晓岚','还珠格格']
    
    print(sorted(lst ,key=lambda s:len(s))
    
    

    filter 筛选过滤

    语法: filter(function,iterable)

    function: 用来筛选的函数,在filter中会自动的把iterable中的元素传递给function,然后根据function返回的True或者False来判断是否保留此项数据

    iterable:可迭代对象

    
    
    #筛选出年龄小于2000的人员
    lst = [{'id':1,'name':'孙悟空','age':2000},
            {'id':2,'name':'奔波儿灞','age':666},
            {'id':3,'name':'霸波尔奔','age':888},]
    lst1= filter(lambda e:e['age'] < 2000,lst)
    print(list(lst1))
    #结果:
    [{'id': 2, 'name': '奔波儿灞', 'age': 666}, {'id': 3, 'name': '霸波尔奔', 'age': 888}]
    
    
    
     
    
    

    ---恢复内容结束---

  • 相关阅读:
    微前端开发常见问题汇总
    什么是UUId?理解UUId的五个版本和使用
    前端实现.md文件转换成.html文件
    使用HTML5 SVG 标签
    小程序开发中遇到的问题
    Django REST framework+Vue 打造生鲜超市(十一)
    Django REST framework+Vue 打造生鲜超市(十)
    Django REST framework+Vue 打造生鲜超市(九)
    Django REST framework+Vue 打造生鲜超市(八)
    Django REST framework+Vue 打造生鲜超市(七)
  • 原文地址:https://www.cnblogs.com/Tiamo-w/p/10269748.html
Copyright © 2011-2022 走看看