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