• python,yield理解


    迭代对象: 
     
    mygene = [x * x for x in range(3)]
    print(mygene)   #[0, 1, 4]
    for i in mygene:
        print(i)
     
    生成器:
    mygene = (x * x for x in range(3))
    print(mygene)   #<generator object <genexpr> at 0x0000000002993F68>
    for i in mygene:    #只打印一次
        print(i)
    
    for i in mygene:    #这里不生效
        print(i)

    Yield:

    def createGenerator():
        mylist = range(3)
        for i in mylist:
            yield i * i
    
    mygenerator = createGenerator()
    print(mygenerator)
    for i in mygenerator:
        print(i)

    返回值:

    def bar():
        a = 10
        return a
    
    def foo():
        a = 10
        yield a
    
    a = bar()    #10
    b = foo()    #<generator object foo at 0x00000000020DAFC0>
    print(a)
    print(b)

    小结:
    1.Yield是关键字,它类似于return,只是函数会返回一个生成器。
    2.生成器是一个可迭代对象,类似于一个某种算法的函数,它不用生成在内存,只有在调用时才显示
    3.只能迭代一次
    4.函数返回的是值,生成器返回的是生成对象

    这个不太容易理解,要多看几遍

    参考资料:

    https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317799226173f45ce40636141b6abc8424e12b5fb27000

    https://foofish.net/understanding-yield.html

  • 相关阅读:
    php5调用web service
    经典SQL语句大全
    15个初学者必看的基础SQL查询语句
    MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解
    mysql update操作
    Oracle CASE WHEN 用法介绍
    日期时间格式正则表达式
    JS的事件监听机制
    JS 事件介绍
    c#格式化数字
  • 原文地址:https://www.cnblogs.com/masita/p/8303260.html
Copyright © 2020-2023  润新知