python_理解篇_yield的个人学习

大家好,我是金鱼座,一个走在测试领域这片蓝海中, 蹉跎前行的技术渣渣,唯有一直走下去,也许能改变点什么,加油!

yield是作为一个生成器的重要标志,在后面的很多地方都或多或少都会用到,特别是如果要学习一些框架代码的时候,由于个人能力问题,对这类的东西一直一知半解,所以今天就把自己的了解做总结下

yield常见的使用法

# 第一种普通用法
def yield_1():
    print("yield_1 start")
    yield
    print("yield_1:{}".format(c))

# 带有返回值的用法
def yield_2(value):
    print("yield_2 start")
    yield  value
    print("yield_2:{}".format(c))

# 可以接收值的用法 
def yield_3(value):
    print("yield_3 start")
    c = yield  value
    print("yield_3:{}".format(c))
  1. 在函数中增加yield,即可完成生成器的定义,这是绝对的,如上述代码,
  2. yield中即可和普通的return一样进行值返回,也可以像方法参数一样接收值的传递

如何执行?
对于一个生成器必须使用next和send对其进行唤醒操作,否则是不会自动进入到方法中执行

y  = func()
y.send(None)  or  next(y)

如何传值?

y.send(value)   该方法会将value值传给yield_3中的 c, c会自动接收

如何返回值

g = next(y) or y.send(value2) 该方式可以让g获取y中的yield value中的value的值

目前来看最基本的三个方式就是上述三种,至于是否有其他的,暂时也没有研究,先弄明白这些吧

你可能感兴趣的:(python_理解篇_yield的个人学习)