2020-09-20

Python中yield学习

一个带有 yield 的函数就是一个 generator,执行到一个 yield 语句就会中断,并返回一个迭代值,下次执行时从 yield 的下一个语句继续执行。看起来就好像一个函数在正常执行的过程中被 yield 中断了数次,每次中断都会通过 yield 返回当前的迭代值。不少人就会疑惑,要你何用,麻烦了。
这时我们就要存在即合理的道理,yield的存在是在大型开发体现他的价值,其特点就是就是节省内存。具体分析如下:

def fab(max): 
    n, a, b = 0, 0, 1 
    L = [] 
    while n < max: 
        L.append(b) 
        a, b = b, a + b 
        n = n + 1 
    return L
 
for n in fab(5): 
    print n

list会随着max的增大而增大,这样的代码如果运行在大的项目中,很有可能占用太多内存,而yield的出现,既不要预先申请一个合理的内存空间,他可以执行一次返回,然后接着上次执行的地再次执行,有没有发现每次执行只返回一个值,显然比返回整个list要节省内存。只要在写的函数加入yield,轻松搞定。

def fab(max): 
    n, a, b = 0, 0, 1 
    while n < max: 
        yield b      # 使用 yield
        # print b 
        a, b = b, a + b 
        n = n + 1
 
for n in fab(5): 
    print n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值