python之三大凶器

列表推导式

  • 所谓的列表推导式就是指轻级循环创建列表
    格式为:
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]:  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之三大凶器)