美文网首页
yield的作用理解

yield的作用理解

作者: 牙齿不帅 | 来源:发表于2019-12-02 14:15 被阅读0次

Python中的yield和java中的不同,java中的yield是妥协的意味,让出cpu给其他线程执行,但不保证让出成功。
python中的yield是停止当前函数跳出函数,停止状态的函数等待被调用激活,yield是生成器这是yield实现其功能所必须成为的样子。如函数1:

def foo():
    print("starting")
    yield


g = foo()

运行:
没有任何输出。这是因为有yield,函数并没有被执行。只是将foo()指向了g。
函数2:

def foo():
    print("starting")
    yield 1
    print("ending")

g = foo()
print(next(g))

运行:输出了starting和1,并没有输出ending,这是因为next(g)只调用了一次,运行到了yield就返回了,print函数打印了返回值:1。这个时候函数停止了,等待下一次的next(g)调用。

starting
1

函数3:

def foo():
    print("starting")
    yield 1
    print("ending")

g = foo()
print(next(g))
print(next(g))

运行:接着上面的,第二个next(g)运行,报错是因为遍历结束了,无yield了。解决方法就是在最好加一个yield。

starting
1
ending
Traceback (most recent call last):
  File "/Users/neu-cyl/PycharmProjects/tensorflow-test/YieldTest.py", line 9, in <module>
    next(g)
StopIteration

函数4:

def foo():
    print("starting")
    yield 1
    print("ending")
    yield 2


g = foo()
print(next(g))
print(next(g))
print("end")

运行:这样就能运行到ending了。

starting
1
ending
2
end

yield的作用挺溜的,其丰富了函数的运行,让函数进入不同的运行阶段。

相关文章

  • yield的作用理解

    Python中的yield和java中的不同,java中的yield是妥协的意味,让出cpu给其他线程执行,但不保...

  • 重点汇总-python-gitbook-重要点学习-1

    Python中关键字yield有什么作用? 为了理解yield有什么用,首先得理解generators,而理解ge...

  • python yield和yield from用法总结

    python yield和yield from用法总结 yield 作用: 注: generator的next()...

  • yield的基本概况

    yield 简单地讲,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是...

  • yield_self 到 then

    yield_self的作用 ruby 在 2.5.0 引入 了的方法 Kernel#yield_self [Fea...

  • koa 和 ES6

    构造器的写法 yield的作用yield类似return,但是在一般函数中,return只能一次。但是yield在...

  • yield的理解

    参考文档:https://www.ibm.com/developerworks/cn/opensource/os-...

  • Java——yield()作用

    Thread.yield()方法作用是:暂停当前正在执行的线程对象,并执行其他线程。 yield()应该做的是让当...

  • yield()方法的作用

    yield()是Thread方法的类,可以让掉当前CPU的时间片。使正在运行中的线程变成就绪状态并且重新竞争CPU...

  • Python

    怎样理解for循环中用yield{}的用法

网友评论

      本文标题:yield的作用理解

      本文链接:https://www.haomeiwen.com/subject/gybfwctx.html