yield()返回参数函数使用

本文深入探讨了Python中生成器(generator)的概念及其工作原理,解释了yield关键字如何使函数变成一个可迭代的对象,以及它如何保存并恢复函数状态,从而实现高效的内存管理。文章通过具体示例展示了yield在for循环及函数参数中的应用。

1.带有 yield 的函数不再是一个普通函数,而是一个生成器generator,可用于迭代。

2.yield 是一个类似 return 的关键字,迭代一次遇到yield时就返回yield后面(右边)的值。重点是:下一次迭代时,从上一次迭代遇到的yield后面的代码(下一行)开始执行。可以减少内存占用!

3.简要理解:yield就是 return 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后(下一行)开始。

4.带有yield的函数不仅仅只用于for循环中,而且可用于某个函数的参数,只要这个函数的参数允许迭代参数。比如array.extend函数,它的原型是array.extend(iterable)。

代码:

##函数,yield
def hello():
    name = input('Please input your name:')
    print('Welcome :%s'%name)
    for i in range(8):
        #使用yield返回数值,保存当前的状态,不打断循环和函数
        #相当于此处中断一下,然后再次回到这里
        yield(i)
        print('hello:',i)
    print('函数内部')
        
#定义主函数
if __name__ == '__main__':
    f = hello()
    for each in f:
        print('输出:',each)
    print('ending')

运行结果:

结果:
Please input your name:456
Welcome :456
输出: 0
hello: 0
输出: 1
hello: 1
输出: 2
hello: 2
输出: 3
hello: 3
输出: 4
hello: 4
输出: 5
hello: 5
输出: 6
hello: 6
输出: 7
hello: 7
函数内部
ending

 

转载于:https://www.cnblogs.com/ruike/p/10262214.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值