zoukankan      html  css  js  c++  java
  • 学习日记0804生成器

    大前提:生成器就是一种自定义的迭代器,它的本质就是一种迭代器

    但凡函数体内包含一个yield关键字的,调用函数不会执行函数体代码,会得到一个返回值,该返回值就是一个生成器对象

    # def func():
    # print('first')
    # yield 1
    # print('second')
    # yield 2
    # print('third')
    # yield 3
    # print('fourth')
    #
    # g=func() 注意:此时函数体代码不执行,此时g就是一个迭代器
    # print(g)
    # print(g.__iter__().__iter__() is g)
    #res1=next(g) 此时函数体代码执行,当遇到一个yield时函数会停止,res1会得到一个yield后的返回值
    强调:针对表达式形式的yield的使用,第一步必须让函数先暂停到一个yield的位置,才能进行传值操作
    总结:
    1 生成器提供了一种自定义的迭代器的表达方式
    2 yield可以保存函数的运行状态
    3 yield 相比于 return:
      相同点:都可以返回值,返回值的类型和个数没有限制
      不同点:yield可以返回多个值,而return只能放回一个值函数就结束了
    生成器表达式:
    g = (i**2(返回值) for i in range(12) if i>3)
    内置函数:
      abs 取绝对值
      all(多个值) 其中的值全为真则返回真,否则返回假
      any(多个值) 其中的值有一个值为真则返回真
      bool() 只有里面的值为真返回真,为假则返回假
      encode() 将二进制编码
      decode() 将二进制解码
      type() 返回里面数据的类型
      callable() 判断是否为内置函数
      chr() 在ascll编码表中查找对应的字符
      ord() 在ascll编码表中查找字符对应的编码
      import 导入模块的操作
      divmod(x,y) 会返回两个值(取整,取余)
      enumerate() 会依次得到索引和值
      eval() 会将字符中的列表转换成列表
      set() 取出元组中的集合
      slice() 按照索引取值的一种方式
      zip() 将一个字符串与一个列表中的元素拼接
      


  • 相关阅读:
    电容的用法:去耦、旁路、滤波等
    成为出色工程师的十大要素
    常用三极管的区别 9012 9013 9014 9015 8550 8050
    照明的几个光学概念
    PCB元件封装
    为什么诈骗短信看上去那么弱智
    摄像·镜头
    LED家居照明
    光色的应用与照度范围
    PowerPCB(PADS)常见问题全集
  • 原文地址:https://www.cnblogs.com/jianhaozhou/p/9439373.html
Copyright © 2011-2022 走看看