zoukankan      html  css  js  c++  java
  • 斐波那契数列---函数与生成器

    首先之前学了函数

    显示函数的形式:

    def fib(max):

          n,a,b = 0,0,1

          while n < max

                print(b)

                a,b = b,a+b

                n = n+1

          return 'done'

    f = fib(10)

    print(f)

    这时候,这一串代码代表一个函数,fib(max)代表一个附带参数的函数 ,并且返回值是done,所以当出现fib(10)时,他就会将参数传给max,然后运行,所以会将所有值打出来,然后print(f)是done。

    那么如何将一个函数变成一个生成器呢?

    将print(b)改为yield b即可

    def fib(max)

          n,a,b = 0,0,1

          while n<max:

               yield b

               a,b=b,a+b

               n=n+1

           return 'done'

    f = fib(10)

    print(f)

    for i in f:

         print(i)

    这时候就变成一个生成器了,后面的执行结果为:<generator object fib at 0x000000000BAD3AF0>,和一串数。

    我们如何调用呢?

    一种方法:

    print(f.__next__())  ,双下划线。当出现这个的时候,其实是生成器还没有开始运行,然后出现一个运行一步再跳出来。这时候我们可以在运行下一步之前我们进行一些新的功能。比如:

    print(f.__next__())
    print("------------") 
    print(f.__next__())

     

  • 相关阅读:
    About HDFS blocks
    Hadoop源代码分析(一)
    Hadoop源代码分析(三)
    MapReduce基础
    Pig安装与配置教程
    MapReduce数据流(三)
    MapReduce数据流(二)
    c++中的临时对象
    如何修改CMD命令行窗口下的默认路径
    VC2005: warning LNK4076: 无效的增量状态文件
  • 原文地址:https://www.cnblogs.com/zaizaiaipython/p/7821852.html
Copyright © 2011-2022 走看看