01今日内容大纲
- 如何学习?
- 下午第一件事情:自己总结
- 一定要 预习
- 分配比例:
- 2/3 的时间放在总结上了 推荐时间花费 1/3的时间
- 晚上八点到九点之前,完成总结和代码联系
- 八点到九点之后,写作业(作业一定要完成)
- 半个小时预习
- 学习结束后,不玩游戏,不看电视剧 严格禁止自己
- 一年十万行 标准程序员 一天最少二百行
- 好的学习方法 事半功倍。
- 匿名函数
- 内置函数(重要)
- 闭包
02昨日内容讲解
- 昨日内容回顾:
- 生成器:生成器就是迭代器。生成器是自己用python代码构建的。
- 生成器函数
- 生成器表达式
- python内部提供的。
- 如何判断是函数,还是生成器函数
- yield 和 return区别?
- yield 和 yield from 区别?
- yield from 将一个可迭代对象,变成一个生成器。
- 列表推导式,生成器表达式:
- 循环模式:[i for i in iterable ]
- 筛选模式:[i for i in iterable if 条件 ]
- 内置函数?(68个内置函数)
- 生成器:生成器就是迭代器。生成器是自己用python代码构建的。
03今日内容
-
匿名函数
-
内置函数。
-
print 屏幕输出
# print函数定义: # def print(self,*args,sep = '',end = '\n',file = None) # pass print(1,2,3,4,sep = '|',end = ' ** ') print('hello world')
-
数据类型转换函数:
# 常用:int() str() bool() list() # tuple() dict() set() # 创建字典的几种方式: # 1. 直接创建 # 2.通过元组的特性创建字典 dic1 = ([(1,'one'),(2,'two')]) print(dict(dic1)) # 3. 通过键值对创建字典 dic2 = dict(hello = 1,world = 2) print(dic2) # 4. fromkeys l1 = [1,2,3,4] dic3 = dict.fromkeys(l1,'one') print(dic3) # dict 字典的一个方法:update用于更新字典中的键/值对,可以修改存在对应的值,也可添加新的键/值到字典中
-
abs() 返回绝对值
print(abs(-9))
-
sum()求和(求一个可迭代对象的所有元素的和)
l1 = [1,2,3,4] print(sum(l1,111))
-
reversed() 将一个序列反转并称成一个新的序列,返回翻转序列的迭代器
l1 = [1,2,3,4] ret = reversed(l1) # 获取的是一个生成器 print(next(ret))
-
bytes:把字符串转换成bytes类型
s1 = '中国' ret = s1.encode('utf-8') # 字符串转换成字节数据类型 print(ret) ret1 = bytes(s1,encode = 'utf-8') # 将字符串转换成字节 print(ret1)
-
zip ()拉链方法:
函数用于可将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的内容。如果各个迭代器的元组个数不一致,则按照长度最短的返回
l1 = [1,2,3] l2 = ['one','two','three','four'] l3 = ['a','b','c','d','e'] ret = zip(l1,l2,l3) # 返回的是一个迭代器 print(list(ret))
-
min/max 函数
l1 = [1,2,3,2,3,56,67,7,2,-3,-1,-6] print(min(l1)) # 求出列表中绝对值最小的数 print(min(l1,key = lambda a : abs(a))) # 凡是可以加key参数的:它会自动的将可迭代对象中的每个元素按照顺序传入key对应的函数中,并且对函数的返回值进行操作
-
sorted ()排序函数 与sort不同,sorted内置函数会生成一个新的列表
l1 = [1,2,3,4,5] l2 = sorted(l1,reverse = 1) print(l2) # 按照字典的值排序 dic = {'one':234,'two':2342,'three':23} dic2 = sorted(dic,key = lambda a:dic[a]) print(dic2)
-
filter()相当于列表推导式的筛选模式
print([i for i in range(1,5) if i > 3]) l1 = [i for i in range(1,5)] ret = filter(lambda a : a > 3,l1) print(ret) print(list(ret))
-
map 相当于列表推导式的循环模式
print([i**2 for i in range(1,6)]) ret = map(lambda a : a ** 2 ,range(1,5)) print(ret) print(list(ret))
-
reduce():reduce函数的作用是先把列表中的前两个元素取出来,计算出一个值后临时保存着,接下来用这个临时保存的值和列表中第三个元素进行计算,求出一个新的值,将最开始临时保存的值替换掉,然后再用这个新的临时值和列表中第四个元素计算。以此类推
from functools import reduce def func(x,y): return x*10 + y ret = reduce(func,range(1,6)) print(ret) print(list(ret))
-
-
闭包:
- 上面被红色框 框起来的区域就是闭包,被蓝色圈起来的那个变量应该是make_averager()函数的局部变量。他应该是随着 make_averager()函数的执行结束之后而消失。但是他没有,这是因为此区域形成了 闭包。 series 变量就变成了一个叫做 *变量 的东西,averager函数的作用会延伸到包含*变量series 的绑定。也就是说,每次调用avg 对应的averager函数时,都可以引用这个*变量series,这个就叫做闭包。
-
闭包的应用:保存局部信息不被销毁,保证数据的安全性。
-
闭包的应用:可以保存一些非全局变量但是不易被销毁,改变的数据。
04 今日总结
- 匿名函数 (一句话函数)
- 内置函数
- 闭包的作用和判断
05明日预习
- 装饰器