Python Yield versus Return

As coders, we are familiar with how function calls work in Python or C.  Whenever we call a function, the function gets a private namespace where its local variables are created.

Return

The return statement is where all the local variables are destroyed and the resulting value is given back (returned) to the caller.  Should the same function be called some time later, the function will get a fresh new set of variables.

Yield

But what if the local variables aren't thrown away when we exit a function?  This implies that we can resume the function where we left off.  This is where the concept of generators are introduced and the yield statement resumes where the function left off.

Here's a simple example:

def generate_integers(N):
    for i in range(N):
        yield i
So here's what actually happens and we can observe this in our python (or ipython) shell:

In [1]:  gen = generate_integers(3)
In [2]:  gen
<generator object at 0x8117f90>
In [3]:  gen.next()
0 
In [4]:  gen.next()
1
In [5]:  gen.next()
2
So that's the difference between return and yield statements in Python.  yield statement is what makes a function a generator function.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值