函数进阶之迭代器,递归
迭代器
可迭代的对象:具有iter方法的对象,可迭代对象不一定是迭代器对象
迭代器对象:具有iter和next方法的对象,迭代器对象一定是可迭代对象,迭代器对象加上iter方法还是迭代器本身
for 循环原理
for i in lt:
-
把lt变成迭代器对象
-
然后迭代使用next方法获取每一个元素
-
捕捉异常中断while循环
三元表达式
print(1) if i > 10 else print(2)
列表推导式
[i for i in range(10)] #0-9已经拿出来了
字典生成式
{k:v for k,v in dic.items()}
生成器表达式
(i for i in rang(10)) #不去使用next取值,是没有值的
生成器
自定制的迭代器
def func():
yield
yield:
1.展厅函数,遇到下一个yield继续运行函数代码
2.具有返回值
3.让函数()变成生成器对象
return:
1.终止函数
2.返回值
匿名函数
没有名字的函数 lambda参数:代码块
一般不单独使用,与max/min/map/filter/sorted联用
递归
函数调用函数本身,但是必须得有结束条件
内置函数
内置函数的直接用的,属于Python解释器的
数据类型的内置函数只有数据类型本身才能使用
enumerate()
面向过程变成
流水线
优点:思路清晰
缺点:可扩展性差;功能与功能直接不独立;调试麻烦