列表推导式
- 所谓的列表推导式就是指轻级循环创建列表
格式为:
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()
网友评论