zoukankan      html  css  js  c++  java
  • Python学习

    1、双下方法

      很少直接调用的方法。一般情况下,是通过其他语法触发的

      __name__  查看函数名的方法

      __doc__    查看函数注释的方法

    def index():
        '''返回值'''
        a = 'asdfg'
        return a
    index()
    print(index.__name__)
    print(index.__doc__)

      __add__()  相加

    a = 1
    b = 2
    print(a.__add__(b))

      __iter__()  迭代器方法

      __next__()   迭代器一个一个的取值

      __length_hint__()  获取迭代器中元素的长度

      __setstate__()  根据索引值指定从哪里开始迭代

    2、迭代器

      1)迭代:以将某个数据集内的数据“一个挨着一个的取出来”,就叫做迭代。

      2)可迭代:可以被for循环的数据集是可迭代的,所以字符串(str)、列表(list)、元组(tuple)、字典(dict)、集合(set)都是可迭代的。

      3)可迭代协议:满足内部可以实现__iter__()方法的要求。

      4)迭代器协议:满足拥有__iter__()和__next__()方法的要求

      5)关系:迭代器一定可迭代,可迭代的通过调用__iter__()方法就能得到一个迭代器

      6)迭代器特点:

        *  很方便使用,且所有的数据只能取一次

        *  节省内存空间

    from collections import Iterable
    from collections import Iterator
    print(isinstance([],Iterator))      #   迭代器     False
    print(isinstance([],Iterable))      #   可迭代的   True
    #   构造数据类型
    from collections import Iterable
    from collections import Iterator
    class A:
        def __iter__(self):pass
        def __next__(self):pass
    
    a = A()
    print(isinstance(a,Iterator))
    print(isinstance(a,Iterable))

    3、dir()方法

      返回某类数据集中所有的方法

    4、生成器

      1)生成器的本质就是迭代器

      2)生成器的表现形式

        * 生成器函数

        * 生成器表达式

      3)生成器函数:

        * 含有yield关键字的函数就是生成器函数

        * 特点:

          1. 调用函数的之后函数不执行,返回一个生成器

          2. 每次调用__next__()方法的时候会取到一个值

          3. 直到取完最后一个,在执行next会报错

    def generator():
        for i in range(20):
            yield '哇哈哈%s'%i
    
    g = generator()  #调用生成器函数得到一个生成器
    print(list(g))
    ret = g.__next__()     #每一次执行g.__next__就是从生成器中取值,预示着生成器函数中的代码继续执行
    print(ret)

        4)从生成器中取值的几个方法

          # __next__():一个一个的取值,取一个释放一个,不占用内存  
          # for:占用内存      
          # 数据类型的强制转换 : 占用内存

       

  • 相关阅读:
    html 页面打印元素被切割,元素自适应分页
    linux jupyter 安装
    == 与 equals()的区别
    多段图
    数据仓库和ODS 的并行
    Linux下对sh文件的基本操作总结
    linux tr命令详解
    数据仓库分层
    利用SQOOP将数据从数据库导入到HDFS(并行导入,增量导入)
    Etl之HiveSql调优(left join where的位置)
  • 原文地址:https://www.cnblogs.com/SharkJiao/p/9392552.html
Copyright © 2011-2022 走看看