验证python - yield 作用的复杂程序

本文探讨了Python中yield关键字的使用,通过杨辉三角的生成实例,详细解析了yield如何在函数间传递值,以及如何利用yield节省内存。文章还提供了完整的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 程序主要是用来测试python - yield 的。yield的作用是在主函数中产生一个数传入子函数,然后从子函数返回一个值到主函数,之后如果从主函数中再用 next(g) 或者g.send(str) 进到子函数 g中,那么子函数从上次yield 跳出子函数的地方的下一行开始执行。其他的原理没什么特别需要注意的。

至于说yield是如何节省内存的,python 初级使用者可以忽略。

#encoding:UTF-8

# ****************************************************
# **    程序来自  https://www.noniu.com/jiaocheng/219.html
# ****************************************************
def pas_triangles():
    a = [1]
    while True:     # 当main 函数中的for 语句判断为False 时,循环结束
        yield a
        a = [sum(i) for i in zip([0] + a, a + [0])]

        # print([0] + a, a + [0])
        # 第一次zip之前是 [0, 1] [1, 0]  zip之后是 [(0, 1), (1, 0)]
        # zip([0] + a, a + [0])
        # 前面的 [0] + a 是为了向list a 前面插入一个 0
        # 后面的 a + [0] 是为了把两个数加起来用的
        # 这样方便计算杨辉三角
        # zip([0] + a, a + [0]) 的结果是始终是2个tuple,所以这里的for循环不用写出它的大小,系统能自动判断




if __name__ == "__main__":  # 该判断语句为真的时候,说明当前运行的脚本为主程序,而非主程序所引用的一个模块
    g = pas_triangles()
    for n in range(10):
        # fill 和 align 大概是为了打印时对齐用的,暂时不用管
        print("{0:{fill}{align}40}".format(str(next(g)), fill=" ", align="^"))
        # print(str(next(g)))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值