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() 将一个字符串与一个列表中的元素拼接
      


  • 相关阅读:
    当Android端,访问WEB service 时,同样的增删改,如果我在一个函数中,实现三个业务(同一函数三个业务是相对独立的,没有交集),和用三个函数实现三个业务,哪一个比较好
    study1
    .net软件工程师面试总结(1)
    pandas 读取文件常见错误
    贝叶斯检查器
    python读取文件异常处理
    knn算法 数字文字图片识别
    饼图简单绘制
    Python自动采集数据简单操作
    数据异常值分析和处理
  • 原文地址:https://www.cnblogs.com/jianhaozhou/p/9439373.html
Copyright © 2011-2022 走看看