zoukankan      html  css  js  c++  java
  • Python进阶:set和dict/对象引用、可变性和垃圾回收/元类编程/迭代器和生成器

    frozenset:不可变集合,无序,不重复

    dict上的特性:

    1. dict的key或者set的值 都必须是可以hash的(不可变对象 都是可hash的, str, fronzenset, tuple,自己实现的类 __hash__)
    2. dict的内存花销大,但是查询速度快, 自定义的对象 或者python内部的对象都是用dict包装的
    3. dict的存储顺序和元素添加顺序有关
    4. 添加数据有可能改变已有数据的顺序

     is和==的区别:is是用来判断两个变量引用的对象是否为同一个,==用来判断应用的对象的值是否是相等。(可以理解为对象的值和地址的异同 )

    元类:元类是创建类的类,对象<-class(对象)<-type

    迭代器:访问集合内元素的一种方式,一般用来遍历数据,和下标访问方式不同,迭代器不能返回,一种惰性方式数据的方式

    生成器:函数里只要有yield

    生成器方式求斐波那契数列:

    def fib(index):
        re_list = []
        n, a, b = 0, 0, 1
        while n < index:
            re_list.append(b)
            a, b = b, a+b
            n += 1
        return re_list
    
    # 生成器求解
    def gen_fib(index):
        n, a, b = 0, 0, 1
        while n < index:
            yield b
            a, b = b, a+b
            n += 1
    
    
    print(fib(10))
    
    for data in gen_fib(20):
        print(data)
    

      

  • 相关阅读:
    Bugs及解决方案列表
    CSS技巧和经验
    我的越权之道
    密码找回逻辑漏洞总结
    业务安全漏洞挖掘归纳总结【转载】
    User Agent
    影响网站页面打开速度的三个因素
    iframe 透明
    ie对行高line-height的诡异解释
    A标记点击后去掉虚线
  • 原文地址:https://www.cnblogs.com/darklights/p/11740339.html
Copyright © 2011-2022 走看看