zoukankan      html  css  js  c++  java
  • python-生成器

    概念:一个函数调用时返回一个迭代器,这个函数就叫做生成器(generator),如果函数中包含yield语法, 这个函数就会变成生成器,如:

    def cash_money(amount):
        while amount>0:
            amount-=100
            print('又来取钱了!!')
            yield 100
    
    atm=cash_money(500)
    print(type(atm))
    
    -----结果-----
    <class 'generator'>
    

    此时需要注意的是,在调用函数的时候,是不会直接把内容打印出来的。此时调用函数中,函数返回的结果是一个迭代器,想要取出其中的值,得用__next__()方法:

    def cash_money(amount):
        while amount>0:
            amount-=100
            print('又来取钱了!!')
            yield 100
    
    atm=cash_money(300)
    print(atm.__next__())
    print(atm.__next__())
    print(atm.__next__())
    
    -----结果-----
    又来取钱了!!
    100
    又来取钱了!!
    100
    又来取钱了!!
    100
    

    另外,在调用生成器的时候,yield后面如果有内容,是不会先执行的,等到下次再调用的时候,才会执行,如:

    def cash_money(amount):
        while amount>0:
            amount-=100
            yield 100                              #yield和print换了下位置
            print('又来取钱了!!')
    
    
    atm=cash_money(300)
    print(atm.__next__())
    print('买了根棒棒糖')
    print(atm.__next__())
    
    -----结果-----
    100
    买了根棒棒糖
    又来取钱了!!
    100
    

      

  • 相关阅读:
    day40 JavaScript初识
    day39 CSS层叠样式表-01
    day38 HTML基础
    day35 数据操作补充和单表操作
    day33 数据库初识
    day27 线程同步
    day25 多进程
    day24 内置方法,异常机制
    ROS 进阶学习笔记(12)
    ROS进阶学习笔记(11)- Turtlebot Navigation and SLAM
  • 原文地址:https://www.cnblogs.com/nizhihong/p/6852974.html
Copyright © 2011-2022 走看看