本周知识总结
生成器 — 迭代器
1.生成器函数 —— 函数内部含有 yield 关键字
# 函数的调用返回一个生成器
# 从生成器中取值的方法和从迭代器中取值的方法是完全相同的
# next — 不太常用 是因为for循坏替你做了这件事
# for — 最好, list — 最不好
# 在定义生成器的时候 , 关键字 : yield
# 在使用生成器的时候 : next , send # send可以把一个值作为信号传入到函数中去
2. 生成器表达式
# 就是将列表推导式的中括号改成小括号
# 列表推导式的结果是一个列表,生成器的表达式的结果是一个生成器
3. 生成器作为面试题
# 生成器中的内容不获取就不生成运算 — 惰性运算
注意事项:
(1): next for list 不要混用
生成器函数和装饰器函数一起用
# 预激生成器的装饰器,在这个装饰器中只做一件事:next(g)
4.递归
#什么是递归 : 一个函数在内部调用自己
解耦: 要完成一个完整的功能,但这个功能的规模要尽量小,并且和这个功能无关的其他代码应该和这个函数分离
递归: 1. 增强了代码的重用性 2. 减少代码变更的相互影响
写递归函数必须要有一个结束条件
5. 匿名函数(lambda)
# lambda 只是一个表达式,函数体比def简单很多
# lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去
# lambda 函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数
6. 内置函数
作用域相关(2):locals 局部 globas 全局
迭代器/生成器相关(3): iter next range
字符串类型代码的执行(3):eval(没有返回值) exec(永远没有返回值) complie(编译)
输出和输入(2):print input(尽量输入提示符)
内存相关(2):hash(结果是一个数字) id(身份运算)
文件操作相关:open
模块相关:import
帮助:help
调用相关:callable(判断一个变量是否可以调用)
查看内置属性:dir
相关内置函数:filter(过滤) map sorted
数据类型(4):bool int float compler 强制转换
进制转换(3):bin(二进制) oct(八进制) hex(十六进制)
数字运算: abs(计算绝对值) divmod(返回除余) round(小数的精确) pow(幂运算) sum(求和) min(计算最小值)
max(计算最大值)
列表和元组(2):list tuple 强转
相关内置函数(2):reversed slice
字符串(9): str format bytes bytearray memoryview ord chr ascii repr