Python中的yield的骚气用法
Did they move long enough to yield a vector?----美剧《24小时》中的一句台词
- yield字面意思就是“生成”,作用也确实如此
- yield是个独特的关键字,跟return没有任何关系
- yield用起来很方便,使用它就是告诉Python解释器给我实例化一个<class ‘Generater’>
- yield应该放在循环语句中,否则没有意义
- 解释器会把yield所在代码块封装成一个迭代器
下面直接看示例代码,了解一下
def get_cubes(end_n):
print("求从 1 到 %d 的立方:" % end_n)
for item in range(1,end_n+1):
yield item**3
def func():
print("I am a normal function")
d = func() #fun()没有返回值,猜猜 d 是神马类型
cubes = get_cubes(10) #foo()有返回,猜猜会不会是整型<class 'integer'>
print("cubes的类型:",type(cubes))
print("get_cubes的类型:",type(get_cubes))
print("d的类型:",type(d))
print("func的类型:",type(func))
for num in cubes:
print(num,' ',end='')
print("可以这样使用生成器")
for item in get_cubes(15):
print(item,' ',end='')
print("也可以这样使用生成器")
cube_list = [item for item in get_cubes(20)]
print(cube_list)
print("可以使用生成器进行列表生成与解析")