一、生成器
1、生成器:
生成器就是一种自定义的迭代器
2、为何要用生成器:
为了节省内存
3、如何用生成器:
函数体内但凡出现yield关键字,调用函数将不会触发函数体代码的运行,而是会返回一个生成器对象,生成器本质就是一个迭代器
4、yield与return:
相同点:在返回值角度用法一样
不同点:yield可以返回值多次值,而return只能返回一次
yield可以暂停函数,然后我们可以用next方法触发函数代码的运行-》协程
示例:
def func():
print("11111")
yield 1
print("22222")
yield 2
print("33333")
yield 3
print("4444")
g=func().__iter__()
print(g) # 生成器本质就是一个迭代器
print(next(g))
print(next(g))
print(next(g))
==============》
<generator object func at 0x00000284DA750200>
11111
1
22222
2
33333
3
def my_range(start,stop,step=1):
while start < stop:
yield start
start+=step
for i in my_range(0,10,2):
print(i)
=================》
0
2
4
6
8
二、三元表达式
三元表达式:if的一种简易表达
好处:代码行数减少,可读性高
通常的if格式:
def max2(x, y):
if x > y:
return x
else:
return y
res = max2(11, 22)
print(res)
=========》
22
三元if格式:
x = 11
y = 22
res = x if x > y else y
print(res)
res = "ok" if 10 > 3 else "no"
print(res)
============》
22
ok