列表推導式
- 所謂的列表推導式就是指輕級循環(huán)創(chuàng)建列表
格式為:
a = [x for x in range(5)]
a = [1,2,3,4,5]
閉包
- 在函數(shù)內(nèi)部再定義一個函數(shù),并且這個函數(shù)用到了外邊函數(shù)的變量,那么將這個函數(shù)以及用到的一些變量稱之為閉包
def test(num):
def inner(x):
print(x+num)
return inner
t = test(1)
t(10)
兇器一:生成器
- 在python中乎完,一邊循環(huán)一邊計算的機制,就叫做生成器: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
生成器的第二種方法:
當推算的算法比較復雜转晰,用類似列表推導式的方法滿足不了時查邢,也可以用函數(shù)的方法來寫
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()函數(shù)調(diào)用并不斷返回下一個值的對象稱為迭代器: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()把迭代器對象轉(zhuǎn)換成迭代器)
兇器三:裝飾器
- 為遵守寫代碼開放封閉的規(guī)則,裝飾器的作用就是為已經(jīng)存在的對象添加額外的功能。
def w1(fun):
def inner():
print("驗證登錄")
fun()
return inner
@w1 #test = w1(test)
def test():
print("---------支付------------")
test()