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

  

posted @ 2017-05-21 21:25  KoishNee  阅读(199)  评论(0编辑  收藏  举报