Python中yield使用方法

2025-10-23 18:14:19

1、打开Python开发工具IDLE,新建一个‘yield.py’文件,并写代码如下:

def fun():

    yield 1

f = fun()

print (f)

Python中yield使用方法

2、F5运行程序,shell中打印出内容如下:

<generator object fun at 0x00000242522AE938>

这是一个生成器对象

Python中yield使用方法

3、改写‘yield.py’文件,代码如下;

def fun():

    yield 1

f = fun()

for i in f:

    print (i)

Python中yield使用方法

4、F5运行程序,shell中打印出内容‘1’,这应该是最简单的生成器使用。

Python中yield使用方法

5、改写‘yield.py’文件,代码如下;

def fun():

    print('hello' )

    m = yield 1   #先不要管左边的m

    print(m)

    d = yield 2   #先不要管左边的d

    print('World!')

c = fun()

print(next(c))

print(next(c))

两个yield,用两个next()函数就行,第一个运行yield 1函数返回1后停止运行

第二个运行到yield 2 停止运行。

Python中yield使用方法

6、F5运行程序,shell中打印出内容,其中打印的None其实就是我们m = yield 1中m的值,由于m没有被赋值,所以为None

Python中yield使用方法

7、改写‘yield.py’文件,代码如下;

def fun():

    print('hello' )

    m = yield 1

    print(m)

    d = yield 2

    print('World!')

c = fun()

ret1=next(c)

print(ret1)

ret2=c.send('Canshu')

print(ret2)

c.send()就是传值给  m = yield 1中的m,ret2接收yield产生的2。send也会触发程序进入到下一个yield

Python中yield使用方法

8、F5运行程序,shell中打印出内容,特别注意的是d我们不能传值了,因为后边的代码里没有yield了.

Python中yield使用方法

9、如果ret1=next(c)这里我们只想进入下一步也可以用ret1=c.send(None)触发。如果传入的参数不是None会报错

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢