Python进阶
一、函数式编程
1、高阶函数:能接收函数做参数的函数
变量可以指向函数,和直接调用函数一样(abs(-10) ==>f = abs, f(-10)),其实函数名就是指向函数的变量
eg:def add(a, b, f) return f(a) + f(b) add(1, 2, abs)
2、map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
3、reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100
def f(x, y): return x + y reduce(f, [1, 3, 5, 7, 9], 100)
4、filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
5、s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' ')
6、Python内置的 sorted()函数可对list进行排序,sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。
sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
7、Python的函数不但可以返回int、str、list、dict等数据类型,还可以返回函数!
8、闭包:内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)
def calc_sum(lst):
def lazy_sum():
return sum(lst)
return lazy_sum
9、高阶函数可以接收函数做参数,有些时候,我们不需要显式地定义函数,直接传入匿名函数更方便。
map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]) 关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。
匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果
定义匿名函数时,没有return关键字,且表达式的值就是函数返回值。
10、装饰器(decorator)
11、要定义关键字参数,使用 **kw;
12、Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问
以"__xxx__"定义的属性在Python的类中被称为特殊属性,有很多预定义的特殊属性可以使用,通常我们不要把普通属性用"__xxx__"定义
以单下划线开头的属性"_xxx"虽然也可以被外部访问,但是,按照习惯,他们不应该被外部访问。