高阶函数:一个函数就接收另一个函数作为参数
求绝对值的函数
abs();
map()
函数接收两个参数,一个是函数,一个是Iterable
,map
将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator
返回>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])) ['1', '2', '3', '4', '5', '6', '7', '8', '9']
reduce()
把一个函数作用在一个序列[x1, x2, x3, ...]
上,这个函数必须接收两个参数,reduce
把结果继续和序列的下一个元素做累积计算,
filter()
函数用于过滤序列,接收一个“筛选”函数和一个序列,把传入的函数依次作用于每个元素,然后根据返回值是True
还是False
决定保留还是丢弃该元素。
sorted()
函数就可以对list进行排序,还可以接收一个key
函数来实现自定义的排序,例如按绝对值大小排序:>>> sorted([36, 5, -12, 9, -21], key=abs) [5, 9, -12, -21, 36]
要进行反向排序,不必改动key函数,可以传入第三个参数
reverse=True
关键字
lambda
表示匿名函数,冒号前面的x
表示函数参数。匿名函数有个限制,就是只能有一个表达式,不用写
return
,返回值就是该表达式的结果。>>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])) [1, 4, 9, 16, 25, 36, 49, 64, 81]
代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator),要借助Python的@语法,把decorator置于函数的定义处
但
int()
函数提供额外的base
参数,默认值为10
。如果传入base
参数,就可以做N进制的转换
functools.partial
就是帮助我们创建一个偏函数的,functools.partial
的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。import functools >>> int2 = functools.partial(int, base=2) >>> int2('1000000') 64