高阶函数
python 的函数不仅能接收普通的参数,还可以接收一个函数本身作为参数,这样的函数称为高阶函数
filter() 函数
filter()
,顾名思义,这个函数是一个过滤器。它接收一个函数 f 和一个 list,f 是一个判断函数,对参数进行判断之后依据条件返回 Ture
或 False
,filter()
就是用 f 对 list 中的每个元素进行判断,自动过滤掉结果为 False
的元素,将符合条件的元素组成的新 list 并返回.
s.strip(rm)
删除 s 字符串中开头、结尾处的 rm 序列的字符。
当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' ')
sorted()函数 内置函数,默认按增序排序
但sorted()
也是一个高阶函数,它可以接受一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素x, y,如果x应该排在y前面则返回-1,如果x应该排在y后面则返回1,其他返回0
sorted()
函数返回一个新的lis
闭包
内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,成为闭包(Closure).
def calc_sum(lst):
def lazy_sum():
return sum(lst)
return lazy_sum
列表的赋值
对一个列表 ,例如l = ['1', '2', '3']
,
- 如果将它直接赋值给一个变量:
a = l
,则a是指向这个列表对象的变量,如果修改a,则直接修改了列表本身。如下:
>>> a = l
>>> a
['1', '2', '3']
>>> a[0] = '5'
>>> a
['5', '2', '3']
>>> l
['5', '2', '3']
- 假设列表中一共有n个元素,若将列表
l[]
赋值给n个变量:a1, a2, a3 = l
,其意义是将列表中的元素赋值给这些变量,此时a1, a2, a3
分别等于'1', '2', '3'
. - 如果将列表赋值给多个变量,但是变量数目不够n个,则会报错。
函数装饰器
在函数调用时想动态地给函数增加一些新的功能,但是又不改变原函数的定义,使用函数装饰器即可实现。
函数装饰器的本质是一个高阶函数
这样做可以极大地简化代码,避免每个函数编写重复代码
格式:
函数装饰器一般是这样的:
@new_fn
def f1(args):
pass
这就相当于:
def f1(args):
pass
f1 = new_fn(f1)
#其中new_fn是一个接收函数的高阶函数
*此时,原有的f1()
就被彻底地隐藏了起来,调用f1()
时只能调用经过装饰的函数
偏函数
有的函数需要多个参数,偏函数就是将个别参数固定了的新函数。例如:
def int2(x, base=2):
return int(x, base)
functools.partial
是一个创建一个偏函数的工具,不需要我们自己定义int2()
,可以直接使用下面的代码创建一个新的函数int2
:
>>> import functools
>>> int2 = functools.partial(int2, base=2)
>>> int2('1000000')
64
版权声明 自由转载 - 保持署名 - 不可商用 - 不可演绎 (CC3.0 创意共享3.0许可证)