这份博客是个人的学习笔记以及总结,观看课程为廖雪峰在慕课上发布的《python》进阶。
一些关于python的基础操作以及安装,可以参考我之前的文章。
这份课程一开始会回顾之前学过的东西:
之前学过的有以下几点:
1python内置的基本类型 变量
2LIst 和turple 顺序的集合类型
3条件判断和循环
4dictheset :根据key访问的集合类型。
5函数
6切片
7迭代
8列表生成式
二本周课程目录:
1函数式编程
2模块使用。
3面向对象编程
4定制类
三学习目标
掌握函数式和面向对象以及模块化编程
四课程开始
4.1函数式编程概念:
functional 抽象的编程模式。 更高的抽象等级
语言层级对语言调用的影响。
4.2特点
1计算视为函数而非指令
2纯函数式编程,不需要变量。
3支持高阶函数,代码简洁。
4.3 python支持的
1不是纯函数时编程,支持高阶函数和闭包,有限支持匿名函数。
4.4高阶函数的概念
直接调用函数,和使用变量的效果一样。
可以修改库函数的内涵。
高阶函数:将函数作为参数的函数。(数分里的算子)
demo:
def add(a,b,c):
return c(x)+c(y)
add( 1,9,abs)
高阶函数的例子
五练习时间
题目1
编写一个简单的高阶函数,实现
输入 x和y得到 根号(x)加根号(y)
解答:
import math
def add(x,y,f):
return f(x)+f(y)
print (add(25,9,math.sqrt))
题目2
编写一个map映射程序实现将输入的字符串首字母大写其他字母小写的功能。
example for map
def f(x):
return x*x
print(list(map(f,[1,2,3,4,5,6,7,8,9])))
输出结果为
[1,4,9,16,25,36,49,64,81]
解答:
def format_name(s):
return s.capitalize()
print(list(map(format_name,[‘adam’,’LISA’,’barT’])))
题目3
reduce函数的使用,reduce函数和map函数一样是个高阶函数,
区别在于,reduce会对列表里面的参数反复调用。
要求编写一个函数实现连乘。
example:
from functools import reduce
def f(x,y):
return x+y
print(reduce(f,[1,3,5,7,9]))
输出结果为:25
解答:
from functools import reduce
def f(x,y):
return x*y
print(reduce(f,[2,4,5,7,12]))
题目4
filter()函数的使用,该函数是python内置的另一个有用的高阶函数,filter()函数接受一个函数f和一个list()
这个函数f的作用是对每个元素进行判断,返回true或者false,filter()根据判断结果自动过滤掉不符合条件的元素
,返回由符合条件元素组成的新list。
example:
def is_not_empty(s):
return s and len(s.strip())>0
print(list(filter(is_not_empty,[‘test’,None,”,’str’,”,’END’])))