五金塑胶 技术支持 东莞网站建设,企业建站系统官网,广东企业网站模板设计,h5编辑工具目录
装饰器
概念
简单的装饰器
复杂点的装饰器
通用装饰器
定义通用装饰器
使用装饰器
偏函数
引入类库
应用
总结 装饰器
概念
装饰器就是个闭包#xff1b;把一个函数当做参数#xff0c;返回一个修改过功能的函数#xff1b;
本质上是一个返回函数的函数。…目录
装饰器
概念
简单的装饰器
复杂点的装饰器
通用装饰器
定义通用装饰器
使用装饰器
偏函数
引入类库
应用
总结 装饰器
概念
装饰器就是个闭包把一个函数当做参数返回一个修改过功能的函数
本质上是一个返回函数的函数。 简单的装饰器
定义一个fun1函数然后定义一个outer函数在不对fun1函数修改的前提下
对fun1返回进行修饰。
示例如下
def fun1():print(this is fun1)def outer():print(对方法进行装饰)fun1()outer()# 执行结果
# 对方法进行装饰
# 这是 fun1 方法
不过一般会传递函数参数并把对方法装饰写在一个内部函数中处理并返回装饰函数。
示例如下
def fun1():print(这是 fun1 方法)def outer(fun):def inner():print(对 %s 方法进行修饰 % (str(fun)))fun()return innerf1 outer(fun1)
f1()# 执行结果
# 对 function fun1 at 0x000001DED3ED1288 方法进行修饰
# 这是 fun1 方法
说明 复杂点的装饰器
使用符号将装饰器应用到函数。
写一个函数获得张三家的剩余苹果数量
通过装饰器判断参数如果小于0则参数值修改为0。
示例如下
def get_apple(num):print(张三有%d个苹果 % num)# 没有装饰器 结果为负数
get_apple(-1)def outer(fun):def inner(num):if num 0:num 0fun(num)return innerouter
def get_apple(num):print(张三有%d个苹果 % num)# 通过装饰器修改 如果数量小于0 则数量为0
get_apple(-1) 通用装饰器
上面的装饰器只能说是定制的装饰器只能接收特定的值。
下面通过之前学到的不定长参数定义一个通用的装饰器。 定义通用装饰器
*args接收单个值的参数
**kwargs接收关键字方式的值参数。
示例如下
def outer(fun):def inner(*args, **kwargs):# 添加修改的功能语句print(添加修改的功能语句)fun(*args, **kwargs)return inner 使用装饰器
示例如下
outer
def get_student(name, address):print(My name is %s, and I come from %s! % (name, address))get_student(zhang san, hebei)# 执行结果
# 添加修改的功能语句
# My name is zhang san, and I come from hebei! 偏函数
偏函数是指固定一个函数的某些参数并生成一个新的函数。 换句话说偏函数是通过一个已有函数创建一个新函数这个新函数固定住原函数的一些参数从而减少了参数的个数。 引入类库
示例如下
from functools import partial 应用
字符串转化为二进制数通过使用偏函数将int函数的base参数固定为2。
示例如下
str_to_bin partial(int, base2)
print(str_to_bin(1000))
print(str_to_bin(1010))# 执行结果
# 8
# 10 总结
本篇是对python 中装饰器和偏函数的简单内容整理偏函数比较简单一些日常开发中也用到过只是不知道这属于偏函数装饰器在django框架中验证请求方法和csrf时使用过。