zoukankan      html  css  js  c++  java
  • 生成器和三元表达式

    一、生成器

    1、生成器:
        生成器就是一种自定义的迭代器
    
    2、为何要用生成器:
        为了节省内存
    
    3、如何用生成器:
        函数体内但凡出现yield关键字,调用函数将不会触发函数体代码的运行,而是会返回一个生成器对象,生成器本质就是一个迭代器
    
    4、yield与return:
         相同点:在返回值角度用法一样
         不同点:yield可以返回值多次值,而return只能返回一次
    yield可以暂停函数,然后我们可以用next方法触发函数代码的运行-》协程
    
    示例:
    def func():
        print("11111")
        yield 1
        print("22222")
        yield 2
        print("33333")
        yield 3
        print("4444")
    
    g=func().__iter__()
    print(g)  # 生成器本质就是一个迭代器
    print(next(g))
    print(next(g))
    print(next(g))
    ==============》
    <generator object func at 0x00000284DA750200>
    11111
    1
    22222
    2
    33333
    3
    
    def my_range(start,stop,step=1):
        while start < stop:
            yield start
            start+=step
    for i in my_range(0,10,2):
        print(i)
    =================》
    0
    2
    4
    6
    8
    

    二、三元表达式

    三元表达式:if的一种简易表达
    好处:代码行数减少,可读性高
    
    通常的if格式:
    def max2(x, y):
        if x > y:
            return x
        else:
            return y
    res = max2(11, 22)
    print(res)
    =========》
    22
    
    三元if格式:
    x = 11
    y = 22
    res = x if x > y else y
    print(res)
    res = "ok" if 10 > 3 else "no"
    print(res)
    ============》
    22
    ok
    
  • 相关阅读:
    淘宝长仁:JVM性能指标的理论极限和衡量方法(TaobaoJVM)
    你不知道的5个JVM命令行标志
    Java 内存模型 JMM
    Java虚拟机深入研究
    java内存区域——daicy
    Java里的堆(heap)栈(stack)和方法区(method)
    JVM学习笔记-操作数栈(Operand Stack)
    c# 网页打印全流程
    备忘录模式实例1
    加密程序-注册方法实现
  • 原文地址:https://www.cnblogs.com/qiukangle/p/14115624.html
Copyright © 2011-2022 走看看