zoukankan      html  css  js  c++  java
  • 生成器

    只要函数内有yield,调用的时候就和函数本身没有关系了,得到了是一个生成器对象,玩法就是next(x),next(x),next(x)

    (若函数体包含yield关键字,再调用函数,并不会执行函数体代码,得到的返回值即生成器对象)

    1.yield表达式应用

    • yield可以用于返回值,但不同于return,函数一旦遇到return就结束了,而yield可以保存函数的运行状态挂起函数,用来返回多次值。
    • 针对表达式形貌的yield,生成器对象必须事先被初始化一次,让函数挂起在food=yield位置,等待调用g.send()方法为函数体传值,g.send(None)等同于next(g)

    2.三元表达式

    res = 条件成立时返回的值 if  条件  else 条件不成立时返回的值
    如:
    x=1
    y=10
    
    res = x if x >10 else y
    

    3.列表生成式

    快速生成列表的表达式

    l=['han_age','wang_age','liu','zhao']  快速筛选出列表后结尾为_age
    l_new=[name for name in l if name.endswith('age')]
    

    4.生成器表达式

    创建一个生成器对象有两种方式,一种是调用带yield关键字的函数,另一种就是生成器表达式,与列表生成式的语法相同,只需要将[]换成()。即:(expoession for item in iterable if condtion)

    [x*x for x in range(3)]    [0,1,4]
    g=(x*x for x in range(3))   此时等到的g为生成式了
    
  • 相关阅读:
    创建无线网命令行
    网站推荐(多用于IT)
    企业级快速开发平台
    用代码截图去理解MVC原理
    .Net 下开发使用JSON
    EF实体框架数据操作基类
    EF实体框架数据操作接口
    开启GZIP
    EF快速开发定义数据接口类
    仿造w3school的试一试功能,实现左侧编辑框,右侧效果页面
  • 原文地址:https://www.cnblogs.com/xiaoxuanworking/p/14354386.html
Copyright © 2011-2022 走看看