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}]
 
 
 
 

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

猜你喜欢

转载自www.cnblogs.com/Tiamo-w/p/10269748.html