美文网首页
python之三大凶器

python之三大凶器

作者: 鬼会画符 | 来源:发表于2018-07-22 20:06 被阅读0次

    列表推导式

    • 所谓的列表推导式就是指轻级循环创建列表
      格式为:
    a = [x for x in range(5)]
    a = [1,2,3,4,5]
    

    闭包

    • 在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包
    def test(num):
        def inner(x):
            print(x+num)
        return inner
    
    t = test(1)
    t(10)
    

    凶器一:生成器

    • 在python中,一边循环一边计算的机制,就叫做生成器:generator。生成器简单来说就是把推导式的[]换成()
    生成器的第一种方法:
    a = (x for x in range(3))
    
    In [2]: a
    Out[2]: <generator object <genexpr> at 0x7fc87fe88728>
    
    In [3]: next(a)
    Out[3]: 0
    
    In [4]: next(a)
    Out[4]: 1
    
    In [5]: next(a)
    Out[5]: 2
    
    生成器的第二种方法:

    当推算的算法比较复杂,用类似列表推导式的方法满足不了时,也可以用函数的方法来写

    def fib(num):
        a,b = 0,1
        for i in range(num):
        
            a,b = b,a+b
            yield b
    f= fib(10)
    print(f)
    
    
    

    凶器二:迭代器

    • 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。(可迭代对象不一定是迭代器 生成器是是可迭代对象 也是迭代器,生成器一定是迭代器)
    from collections import Iterator
    
    isinstance((x for x in range(10)), Iterator)
    Out[57]: True
    
    isinstance([], Iterator)
    Out[58]: False
    
    isinstance({}, Iterator)
    Out[59]: False
    
    isinstance('abc', Iterator)
    Out[60]: False
    
    isinstance(100, Iterator)
    Out[61]: False
    
    (通过iter()把迭代器对象转换成迭代器)

    凶器三:装饰器

    • 为遵守写代码开放封闭的规则,装饰器的作用就是为已经存在的对象添加额外的功能。
    def w1(fun):
        def inner():
            print("验证登录")
            fun()
        return inner
    
    @w1 #test = w1(test)
    def test():
        print("---------支付------------")
    
    test()
    

    相关文章

      网友评论

          本文标题:python之三大凶器

          本文链接:https://www.haomeiwen.com/subject/vwlrmftx.html