首页 > 其他分享 >yield函数

yield函数

时间:2022-11-23 12:55:37浏览次数:62  
标签:函数 res yield isgeneratorfunction start print foo

20221123

为什么引入yield

  1. 节省内存,即用即取

每次调用,执行到yield行return一个值,停止运行函数。下次调用,从yield的下一行接着执行。

def foo():
    print("starting...")
    while True:
        print('start')
        res = yield 4
        print("res:",res)
g = foo()
print('first step')
print(next(g))
print("*"*20)

output:
first step
starting...
start
4
********************

print(next(g))
res: None
start
4

print(g.send(7))
res: 7
start
4

from inspect import isgeneratorfunction 
print(isgeneratorfunction(foo()))
print(isgeneratorfunction(foo))

False
True

要注意区分 foo 和 foo(),foo 是一个 generator function,而 foo() 是调用 foo 返回的一个 generator

参考:
[1] https://www.runoob.com/w3cnote/python-yield-used-analysis.html
[2] https://blog.csdn.net/mieleizhi0522/article/details/82142856#:~:text=yield是一个常用于,,迭代器,生成器。

标签:函数,res,yield,isgeneratorfunction,start,print,foo
From: https://www.cnblogs.com/xiaoxu-xli/p/16917927.html

相关文章

  • SQL Server数据类型转换函数cast()和convert()详解
    https://blog.csdn.net/m0_67401382/article/details/126117592常用的函数有cast()和convert()。cast()和convert()函数比较:(1)cast一般更容易使用,convert的优点是可以格......
  • 20.3 DLL入口函数--《Windows核心编程》
    如果在执行一些与进程或者线程有关的初始化或者销毁工作的时候,需要DllMain。如果只需要创建一个包含资源的DLL,不需要这个函数。B00LWINAPIDllMain(HINSTANCEhinstDll,......
  • 20.5 函数转发器/已知的DLL/DLL重定向/模块的基地址重定位--《Windows核心编程》
    一、函数转发器函数转发器是DLL的输出节(导出段)中的一个项目,用于将对一个函数的调用转至另一个DLL中的另一个函数。可以在DLL中使用函数转发器:#pragmacomment(link......
  • 随想录(用memmove函数代替strncpy函数)
        有过C语言编程的朋友应该都有过指针越界的困扰。不管越界的地方是全局地址、还是局部地址,查起来都是非常麻烦,原因大多时候都来自于自己对char数组类型的误用。很多......
  • 用汇编的眼光看C++(之虚函数)
       虚函数是面向对象设计中的一个重要内容。它的出现使得我们只需要相同的接口函数,并可以得到不同的生成结果。但是有些朋友却知其然,不知其所以然,为什么会出现这样的结......
  • MFC对话框初始函数
     对话框初始函数:OnInitDialog()如果没有需要自己添加  注意:  代码只能加在此处      ......
  • java 基础——函数(方法)
    【注:本篇适合零基础】 函数基本定义、语法首先我们先要了解什么是函数? 函数的定义:在类中,有特定功能的一段独立代码块 说人话:简单来说就是,在一个类(一个 .java ......
  • 把socket相关函数封装成类
         book241.cpp和book242.cpp程序已经有点长了,有些啰嗦了,如果还想扩展功能,或用于多进程、多线程,程序结构将非常复杂。    不管是socket通信程序的客户端还......
  • C++语言函数重载详解和示例
     C++函数重载的概念在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同。例如把变量的值写入文件,变量的类型int、long、double、char,需要通过参数把变量......
  • C语言函数
    文章目录​​一、函数的概念​​​​1、函数的概念​​​​2、函数的分类​​​​二、自定义函数的声明​​​​三、自定义函数的定义​​​​四、自定义函数代码的组织​​......