Python高级语法——函数式编程——学习心得笔记
1. 函数式编程(FunctionalProgramming)
1.1. 基于lambda演算的一种编程方式
- 程序中只有函数
- 函数可以作为参数,同样可以作为返回值
- 纯函数式编程语言:LISP, Haskell
- Python函数式编程只是借鉴函数式编程的一些特点,可以理解为一半函数式一半Python
- 常用函数
- 高阶函数
- 返回函数
- 匿名函数
- 装饰器
- 偏函数
- lambda表达式
- 函数:最大程度复用代码
- 存在问题: 如果函数很小很短,则会造成啰嗦
- 如果函数被调用次数少,则会造成浪费
- 对于阅读者来说,造成阅读流程的被迫中断
- 看实例 小函数
- lambda表达式(匿名函数)
- 一个表达式,函数体相对简单
- 不是一个代码块,仅仅是一个表达式
- 可以有参数,有多个参数也可以,用逗号隔开
- 看实例
1.2. 高阶函数
- 把函数作为参数使用的函数,叫高阶函数
- 看实例
- 系统高阶函数
- map: 映射
- 即把集合或者列表中的元素,每一个元素都按照一定的规则进行操作,生成一个新的
列表或者集合 - map函数是系统提供的具有映射功能的高阶函数,返回值是一个迭代对象
- 看实例
- reduce: 归并,缩减
- 把一个可迭代的对象最后归并成一个结果
- 对于函数参数有要求:
- 必须有两个参数,必须有返回结果
= 看实例
- filter: 过滤函数
- 对一组数据进行过滤,符合条件的数据会生成一个新的列表并返回
- 看实例
- 排序
- python内置函数(sort()、sorted()、argsort()
- 高阶函数排序:把一个序列按照给定算法进行排序
- 返回函数
- 函数作为函数值返回
- 看实例
- 闭包(closure)
**
实例
**
1.3. 装饰器(decrator)
- 在不改动函数代码的基础上次无限扩展函数功能的一种机制
- 本质上讲,装饰器是一个返回函数的高阶函数
- 装饰器语法:
- 使用@语法,即在每次要扩展到函数定义前使用@+函数名
- 看实例23_2.py
- 装饰器的好处:
- 一旦定义,则可以装饰任意函数
- 一旦被其装饰,则把装饰器的功能直接添加到定义的函数上
**
实例23_2
**
1.4. 偏函数
- functools.partial()
- 作用:把一个函数的某些函数或者参数固定,返回一个新函数
- 看实例
1.5. 高级函数补充
- zip 把两个可迭代内容生成一个可迭代的tuple元素类型组成的内容
- enumerate 根zip功能很像,可迭代对象里的每一个元素,配上一个索引,然后索引和内容构成一个tuple类型
- collection
- namedtuple: 是一个可命名的tuple
- deque: 解决了频繁删除和插入带来的效率问题
- defaultdict: 当直接读取dict不存在的属性时,直接返回默认值
- counter: 统计字符串中每个字符出现的个数,并返回一个字典
- 看实例23_3.py
实例23_3
1.6. 调试技术
- 调试流程:单元测试->集成测试->交测试部
- 分类:
- 静态调试:
- 动态调试:
- pycharm调试
- run: 全部运行模式
- debug: 调试模式
- 断点:程序的某一行,程序在debug模式下,遇到断点就会暂停