一、装饰器
1、概念:装饰器是一个闭包(内层函数引用外层函数的非全局变量,这个内层函数就可称之为闭包),把一个函数当做参数返回一个替代版的函数,本质上就是一个返回函数的函数。
2、作用:在不修改源代码的基础上,扩展代码的使用。
3、理解装饰器
#不带参数的源函数 def fun1(): print("I love python") fun1() #若我想在原来的基础上,先输出一行的*号,我们可以重新写一个函数 def fun2(): print("***********") print("I love python") fun2() #但是这改变了源函数
#这时我们用到了装饰器的思想 def outer(func): def inner(): print("***********") fun1() return inner fun1 = outer(fun1) fun1()
接下来,写一个带参数的,比较通用的装饰器,并运用装饰器语法糖(@)来表示。
def outer(func): def inner(age): if age<0: print("输入错误") age=0 #添加对源函数修改的内容 func(age) return inner @outer #@将装饰器应用到函数 def introduce_age(age): print("I‘m %d years old" % (age)) #源函数 introduce_age(-10) #执行语句
二、偏函数
python中的偏函数和数学中的偏函数是不同的,这是两个东西,其实python中的偏函数的作用和原函数的作用类似,只是原函数中有些参数,在每次调用时都需要进行修改,难免有些麻烦,如int函数,它默认是十进制(base = 10),我们要用到二进制就需要每次更改base =2。所以我们可以自己定义一个函数:
def int2(str,base=2): return int(str,base) print(int2("1010")) #运行结果 10
python中的functools包中的partial可以直接实现这样的功能,就不需要我们自己去设置了,它的作用就是把函数中的一个参数固定住,形成一个新的函数。
import functools int2 = functools.partial(int,base = 2) print(int2("1011")) #运行结果 11
原文地址:https://www.cnblogs.com/sparkingplug/p/10990421.html
时间: 2024-10-08 07:56:13