'''
函数进阶,仅作了解
'''
#可迭代对象与迭代器:
# 可迭代对象: 含有__iter__方法叫做可迭代对象,除了数字类型,都是可迭代对象,可迭代对象使用__iter__变成迭代器
# 迭代器对象: 含有__iter__和__next__方法叫做迭代器对象,只有文件是迭代器对象,迭代器使用__iter__依然是迭代器
# 可迭代对象不一定是迭代器对象; 迭代器对象一定是可迭代对象
#三元表达式
x = 10
y = 20
print(x) if x > y else print(y)
#列表推导式
lt = [i**2 for i in range(10)]
print(lt)
#字典生成式
dic = {i:i**2 for i in range(10)}
print(dic)
或
lt1 = ['a', 'b', 'c']
lt2 = [1, 2, 3]
dic = {k: v ** 2 for k, v in zip(lt1, lt2)}
print(dic)
#生成器表达式:
#生成器: 本质就是迭代器,生成器就是一个自定义的迭代器
#生成器:含有yield关键字的函数叫做生成器
#一个yield相当于一个next; 暂停函数
'''
yield与return的区别:
yield的特性:
1.暂停函数 2. 通过next取值
return的特性:
1.终止函数2. 通过调用函数拿到值
'''
#递归:传递 ; 回归.函数a内部直接调用函数a本身
# 每一次递归,不会结束函数,并且每一次递归都会开辟内存空间,如果一直开辟内存就炸掉了,所以最多递归1000次
# 真正的递归必须得要有退出条件
'''
递归:
1.函数内部调用函数自己
2.必须要有退出条件
3.递归必须要有规律
'''