回顾一下函数,函数就是把固定的逻辑放在一起,方便我们下次使用,不用写重复的代码,提升代码的复用性以及可读性;一个好的函数,可以只通过函数名就可以看懂这个过程要做什么,所以当我们有很大一段逻辑代码的时候,拆成不同的函数,可以大大的提高代码易读性。
函数式编程,这里多了一个“式”,虽然也可以归结到面向过程的程序设计,但其思想更接近数学计算。函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!
Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。
Python内建的filter()函数用于过滤序列。 filter()函数接收一个函数和一个序列作为参数,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
def is_odd(n):
return n % 2 == 1
list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 结果: [1, 5, 9, 15]
把一个序列中的空字符串删除的写法:
def not_empty(s):
return s and s.strip()
list(filter(not_empty, ['A', '', 'B', None, 'C', ' ']))
# 结果: ['A', 'B', 'C']
可见filter的用法突出一个“筛选”注意到filter()函数返回的是一个Iterator,也就是一个惰性序列,所以要强迫filter()完成计算结果,需要用list()函数获得所有结果并返回list。
全部0条评论
快来发表一下你的评论吧 !