python的yield用法,python yield函数怎么用

  python的yield用法,python yield函数怎么用

  Yield只是一个生成器。生成器是一个函数,当它最后一次被返回时,它会记住它在函数体中的位置。对生成器函数的第二次(或第n次)调用跳转到函数的中间,而最后一次调用的所有局部变量保持不变。

  生成器是一个函数,

  该函数的所有参数都被保留,

  第二次调用这个函数时,

  使用的参数是上次保留的。

  生成器还“记得”它是在流控制中构造的。

  生成器不仅“记住”其数据状态。生成器还“记住”它在流控制结构中的位置(在命令式编程中,这个结构不仅仅是一个数据值)。连续性仍然是通用的,因为它让你随意在执行框架之间跳转,而不是总是返回到直接调用方的上下文(就像一个生成器)。

  yield生成器的运行机制

  当你向生成器要一个数的时候,生成器会一直执行,直到yield语句出现,生成器会给你yield的参数,之后生成器就不会继续运行了。当你向他要下一个数字时,他会从上一个状态开始运行,直到yield语句出现,给你参数,然后停止。这一过程一直重复,直到函数退出。

  示例:Python置换、组合生成器

  生成全排列

  defperm(项目,n=无):

  ifnisNone:

  n=len(项目)

  foriinrange(len(items)):

  v=项目[i:i 1]

  ifn==1:

  yieldv

  else:

  rest=items[: I]items[I 1:]

  对于一个项目(其余,n-1):

  伊尔德夫生成组合

  defcomb(项目,n=无):

  ifnisNone:

  n=len(项目)

  foriinrange(len(items)):

  v=项目[i:i 1]

  ifn==1:

  yieldv

  else:

  其余=项目[i 1:]

  forcincomb(其余,n-1):

  yieldv c

  a=烫发( abc )

  福宾纳:

  printb

  破裂

  打印-*20

  福宾纳:

  结果如下:印刷银行

  102 ppopf 006 ~/测试。/generator.py

  字母表

  -

  自动对比度平衡

  二进制-模拟转换(binary analogue convert的缩写)

  喹啉甲酸

  驾驶室

  在cba中可以看到,第一个周期中断后,生成器没有继续执行,而第二个周期跟在第一个周期之后。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: