python 高阶函数 与关键字参数

时间:2021-12-10 23:21:06

修饰器

  之前我一直有一个疑惑,就是修饰器里面对函数的操作为什么不能直接写进函数里面就好了吗?何必这么麻烦呢,当我进一步理解之后,原来修饰器的作用就是完成那些不能写进函数里面的功能的,好比必须要等到函数完成后的一些操作一样,(那么函数完成之前的工作怎么办呢?)

  之前的学习笔记:https://www.cnblogs.com/Gaoqiking/p/10470407.html

map/reduce

  能够将函数的参数一下传进去,他能按顺序每次调用几个去自动执行完所有的

  参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317852443934a86aa5bb5ea47fbbd5f35282b331335000

过滤器

  参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431821084171d2e0f22e7cc24305ae03aa0214d0ef29000

排序

  参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318230588782cac105d0d8a40c6b450a232748dc854000

偏函数

  参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143184474383175eeea92a8b0439fab7b392a8a32f8fa000

  能不能让自定义的函数使用这个特性呢?想着是应该可以的吧

  偏函数的作用就是把函数的一些参数(这个函数的返回值是一个函数,可以理解为用它来选择函数)给固定起来,或者说是可以在以后使用的时候传递其他值,而且使用非常方便

#使用int做N进制转换
>>> int('12345', base=8)
5349
#用下面这个例子引入偏函数
#我们要是自定义一个可以让int()中的base变成可以接受我们传入的进制的话是要这样
def int2(x, base_mark=2):***********************************************这里可以是base,也可以是basee
    return int(x, base_mark)
>>> int2('1000000')
64
#使用python中提供的偏函数的话就可以将代码简化为这样
>>> import functools
>>> int2 = functools.partial(int, base=2)#只需要一行代码***********************************************这里必须是base,不可以是basee
>>> int2('1000000') 64

  也可以在调用时传入其他值

  注意,构建偏函数时固定的参数如果是关键字参数,必须要使用原来的关键字,比如上面的base在定义的时候,即关键字要符合原来的函数

>>> int2('1000000', base=10)
1000000

  当函数的参数个数太多,需要简化时,使用 functools.partial 可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。

 

关键字参数:

  关键字参数就是**kw,而调用函数时对应于关键字参数的是一个字典

#如
dict={'base':'2'}
int('55',dict)#相当于int('55',base=2)