Python yield关键简单解析

Python yield关键简单解析

  • 1,带有yield关键字的函数,被python解析器,视为一个生成器。

  • 2,类似于return关键字,但是return关键字会结束函数的调用,并且在下一次调用函数的时候,该函数会从开头开始。而yield关键字,也会结束该函数,但是该函数为冻结状态,当下次这个函数被唤醒时,会从上次调用的地方,继续向下执行。而不像return一样,从头开始。

  • 3,很像c++中的static关键字。

  • 3,示例,生成3以内整数的平方。并打印。

    • 普通代码生成方法

      def gen(n):
          l = []  # 定义一个列表,将生成的数保存到列表里面,然后生成
          for i in range(n):
              l.append(i*i)
              print("hello")
          return l
      
      
      for i in gen(3):
          print(i)
      
      • 输出结果
      hello
      hello
      hello
      0
      1
      4
      
      • 我们可以看到,是先生成列表,最后打印出来
    • 使用生成器

      def gen(n):
          for i in range(n):
              yield i*i    # 使用yield关键字,使gen成为生成器
              print("hello")
              
      
      for i in gen(3):
          print(i)
      
      • 输出结果
      0
      hello
      1
      hello
      4
      hello
      
      • 我们可以清楚的看到,当生产一个数的平方后,gen()函数会保存上一次执行的断点。当再次调用时,会从断点处,继续向下执行
  • yield生成器的好处,当使用列表进行保存大量数据时,会占用大量内存,而生成器,是即时性返回数据的,不会出现,在内存中保存大量数据的情况,节约内存资源。

原文地址:https://www.cnblogs.com/jlxa162hhf/p/14161231.html