python中yield关键字用法

首先,把yield理解成return,可以用作返回数据,如下:

def f():
	yield 9
next(f())

#结果为  9

如果你用一个变量接受该值,首次执行时并不会执行函数,而是先得到一个生成器,如下:

def f():
	print("提示字符!")
	yield 9
g=f()
print(g)

#结果为:  
<generator object f at 0x00000196A1AAFDB0>

可以看出,调用了f()函数,但并没有输出“提示字符!”汉字,说明未执行函数体,g的打印结果为一个生成器。
那什么时候才会执行函数体呢?当需要用到返回的数值时执行,如下:

def f():
	print("提示字符!")
	yield 9
g=f()
print(g)
print("--------")
print(next(g))

#结果为:
<generator object f at 0x00000196A1AAFDB0>
--------
提示字符!
9

通过next()函数获取返回值,则开始执行函数体。
yield与return还有一点不同的是,return返回数据后直接退出函数,不再执行,但yield返回数据后函数只是“暂停”状态,之后仍然可以通过next()函数接着之前的状态继续运行,如下:

def f():
	while(True):
		print("提示字符!")
		yield 9
		print("程序接着之前状态运行!")
g=f()
print(next(g))
print("-----分隔符-----")
print(next(g))

#结果为:
提示字符!
9
-----分隔符-----
程序接着之前状态运行!
提示字符!
9

可以看出,yield返回后函数并未退出,下一次调用时接着在运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值