坚持学习第11天-装饰器函数-偏函数-python

装饰器函数–作用
在不改变原来函数的代码上进行修改,如果想要改变的是别人写好的代码,是不可能再改动,一点点改动就得大改,如果想要自己的代码达到想要的目的,那么就进行装饰

坚持学习第11天-装饰器函数-偏函数-python
可以把装饰器专门写在一个文件里面,引入就好

但是每次都得重新写一遍say函数,写明,say函数要经过outer函数装饰过后新的say,所以能否不重写?
坚持学习第11天-装饰器函数-偏函数-python
那么就是,哪个函数要装饰,就在哪个函数上面加一个表明装饰器的语句,@outer,表明接下来的函数则经过outer装饰过后的say,那么在调用的时候,就可以直接say
想装饰谁,就直接在上面加上@装饰器的名字

如果要装饰的函数需要传参
那就在装饰器里面的inner(参数)函数里面把要传的参数传进去

如果传的参数不固定,那么则将inner()里面的参数变为*args,和**kwargs
*args为变长的参数,**kwargs为关键字参数
坚持学习第11天-装饰器函数-偏函数-python装饰器的里面变长的参数,这样不管多少参数,都能传进来
坚持学习第11天-装饰器函数-偏函数-python
总结的来看就是,传递一个函数进来,返回一个新的函数出去,新的函数加工了原函数。

**

偏函数

**
int(“1010”,base=2)是把“1010”当成一个二进制来看,并且输出10进制
如果想要批量的固定住一个参数怎么办呢?
方法一:可以重新定义一个函数
def int2(str,base=2)
return int(str,base)

坚持学习第11天-装饰器函数-偏函数-python

方法二:引入固定的函数包,如functools.partial

坚持学习第11天-装饰器函数-偏函数-python
那么它的意思则为,用functools.partial去修饰int函数,去固定住int函数的base参数等于2,并且返回一个新的函数,int3,是一个被修饰之后,固定了参数的函数。

坚持学习第11天-装饰器函数-偏函数-python