博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python-生成器
阅读量:6242 次
发布时间:2019-06-22

本文共 897 字,大约阅读时间需要 2 分钟。

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

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

 

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

def cash_money(amount):    while amount>0:        amount-=100        print('又来取钱了!!')        yield 100atm=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

  

转载于:https://www.cnblogs.com/nizhihong/p/6852974.html

你可能感兴趣的文章
Java泛型详解
查看>>
分治算法思想介绍
查看>>
1 张图秒懂 Nova 16 种操作 - 每天5分钟玩转 OpenStack(44)
查看>>
MVP模式在Android项目中的使用
查看>>
一起同过窗
查看>>
XMLHttpRequest详解
查看>>
9 数字载波传输1
查看>>
iOS开发之功能模块--高仿Boss直聘的IM界面交互功能
查看>>
Flume Source 实例
查看>>
MySQL 缓存表建触发器
查看>>
.NetCore~C#6的一些新特性
查看>>
Recurrent Neural Networks(RNN) 循环神经网络初探
查看>>
多线程中数的原子性加减
查看>>
客户被绑,蒙眼,惊问:“想干什么?” 对方不语,鞭笞之,客户求饶:“别打,要钱?” 又一鞭,“十万够不?” 又一鞭,“一百万?” 又一鞭。客户崩溃:“你们TMD到底要啥?” “要什么?......
查看>>
jQuery.fly插件实现添加购物车抛物线效果
查看>>
[svc]linux的ip命令操作接口和路由表
查看>>
39.Node.js域名解析---DNS模块
查看>>
Ajax 跨域,这应该是最全的解决方案了
查看>>
vs2010下release版本调试设置
查看>>
Windows连接Linux虚拟机里面的Docker容器
查看>>