zoukankan      html  css  js  c++  java
  • 函数生成器中的yield和sign的使用

    # *_*coding:utf-8_*_
    def range2(n):
        count = 0
        while count < n:
            count = count + 1
            sign = yield count  # return
            if sign == 'stop':
                print('---stop---', sign)
                # break
                # return '已经循环结束'
    
            print('---sign---', sign)
        return '已经循环结束'
    
    
    
    new_range = range2(8)  # 函数range2(6)直接作为生成器,必须赋值给变量,让变量变为生成器
    print('你好啊next(new_range1)', next(new_range))
    print('你好啊next(new_range2)', next(new_range))
    print('你好啊next(new_range3)', next(new_range))
    print('你好啊next(new_range4)', next(new_range))
    print('你好啊next(new_range5)', next(new_range))
    new_range.send(1)
    new_range.send('stop')
    输出:
    你好啊next(new_range1) 1
    ---sign--- None
    你好啊next(new_range2) 2
    ---sign--- None
    你好啊next(new_range3) 3
    ---sign--- None
    你好啊next(new_range4) 4
    ---sign--- None
    你好啊next(new_range5) 5
    ---sign--- 1
    ---stop--- stop
    ---sign--- stop
    
    
    -------------------------------------------
    for i in new_range:
        print('这是i:',i)
    输出:
    这是i: 1
    ---sign--- None
    这是i: 2
    ---sign--- None
    这是i: 3
    ---sign--- None
    这是i: 4
    ---sign--- None
    这是i: 5
    ---sign--- None
    这是i: 6
    ---sign--- None
    
    写入自己的博客中才能记得长久
  • 相关阅读:
    Spring的声明试事务
    spring-AOP-添加日志
    弹窗插件
    工厂设计模式
    smartUpload组件批量下载
    简单的C++委托 —— 用模板类实现类成员函数的回调
    偷Microsoft师学MFC艺:且看C++如何支持反射
    C++中回调(CallBack)的使用方法
    epoll 使用实例
    C++成员函数指针的应用
  • 原文地址:https://www.cnblogs.com/heris/p/14068599.html
Copyright © 2011-2022 走看看