zoukankan      html  css  js  c++  java
  • python yield使用

     输出斐波那契數列前 N 个数

    正常版本:

     1 def fab(max): 
     2     n, a, b = 0, 0, 1 
     3     L = [] 
     4     while n < max: 
     5         L.append(b) 
     6         a, b = b, a + b 
     7         n = n + 1 
     8     return L
     9  
    10 for n in fab(5): 
    11     print(n)
    View Code

    使用yield版本:

     1 def fab(max): 
     2     n, a, b = 0, 0, 1 
     3     while n < max: 
     4         yield b      # 使用 yield
     5         # print b 
     6         a, b = b, a + b 
     7         n = n + 1
     8  
     9 for n in fab(5): 
    10     print(n)
    View Code

    简单地讲,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。

    原文地址:https://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/

  • 相关阅读:
    大数据学习操作笔记
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    jstl标签,c:foreach无效的问题
    阅读笔记
    《高效能人士的7个习惯》
  • 原文地址:https://www.cnblogs.com/sammy1989/p/9480524.html
Copyright © 2011-2022 走看看