python- - 高级特性(装饰器、内置高阶函数)

装饰器

装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的
前提下增加额外的功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,
比如:插入日志、性能测试、事务处理、缓存、权限校验等应用场景。
为什么需要装饰器?
写代码要遵循 开放封闭 原则,虽然在这个原则是用的面向对象开发,但是也适用于函数式编程,简单来说,它规定已经实现的功能代码不允许被修改,但可以被扩展,即:
1.封闭:已实现的功能代码块
2.开放:对扩展开发
装饰器(decorator)功能

  1. 引入日志
  2. 函数执行时间统计
  3. 执行函数前预备处理
  4. 执行函数后清理功能
  5. 权限校验等场景
  6. 缓存

通用装饰器

在这里插入图片描述
装饰器课上练习:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
引入日志的装饰器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
多个装饰器装饰:判断用户是否登陆,判断用户是否有权限
注意:1.上面的装饰器先执行,后面的装饰器后执行 2.函数先被下面的装饰器装饰
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
多个装饰器装饰:1.判断用户是否登陆 2.判断用户是否有权限 3.系统中的用户信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果装饰器需要传递参数,在原有的装饰器外面嵌套一个函数既可
在这里插入图片描述
在这里插入图片描述

内置高阶函数

什么是高阶函数?
把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象
的编程范式。
map函数
map() 会根据提供的函数对指定序列做映射。
第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。
map应用案例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
reduce函数
reduce() 函数会对参数序列中元素进行累积。
第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个结果。

reduce的应用案例
在这里插入图片描述
在这里插入图片描述
利用reduce求10的阶乘
在这里插入图片描述
在这里插入图片描述
filter函数
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个序列。
用filter函数获取100以内能被3或者5整除的所有数
在这里插入图片描述
在这里插入图片描述
用filter函数获取2000年-2999年的所有闰年
在这里插入图片描述
在这里插入图片描述
用filter函数获取1000以内所有的素数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
内置高阶函数sorted/max/min
sorted() 函数对所有可迭代的对象进行排序操作。返回重新排序的列表。
sorted(iterable, key=None, reverse=False)
key: 主要是用来进行比较的元素,只有一个参数,
reverse: 排序规则,True 降序 ,False 升序(默认)。
python排序sort()和sorted()的区别是什么?

  1. 排序对象不同: sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
  2. 返回值不同:
    list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,
    内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
    max函数与min函数应用案例
    在这里插入图片描述
    在这里插入图片描述
    用sorted函数将所有的偶数移到前面,所有的奇数移到后面
    在这里插入图片描述
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43592835/article/details/90915258