python-装饰器及一些常用内置函数

本文深入解析Python装饰器的定义与应用,包括权限检验、日志插入及性能测试等场景。同时,介绍了如何利用装饰器测量函数执行时间,并探讨了匿名函数、排序函数sorted与筛选函数filter的使用技巧。

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

装饰器

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

例:装饰器中的语法糖

#用装饰器查看一下函数的执行时间
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}]

 

 

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

转载于:https://www.cnblogs.com/Tiamo-w/p/10269748.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值