python正则表达式生成器_Python学习之路-装饰器生成器正则表达式
裝飾器
通俗的講,裝飾器就是在不改變源代碼基礎上,給源代碼增加新功能。
不改變函數的源代碼、調用方式、返回值等,給函數增加新功能。
經典案例:登錄裝飾器,def?login_decorator(func):
def?inner():
if?USER_TEMP["status"]?==?False:
print("\033[31;1m用戶未登錄,請先登錄\033[0m")
login_atm()
func()
return?inner
@login_decorator
def?withdrawals():
print("取款函數。。。。")
說白了,給函數增加新功能,就是把這個函數當作參數傳到另一個函數里面。
生成器
通過列表生成式,我們可以直接創建一個列表。但是,受到內存限制,列表容量肯定是有限的。而且,創建一個包含100萬個元素的列表,不僅占用很大的存儲空間,如果我們僅僅需要訪問前面幾個元素,那后面絕大多數元素占用的空間都白白浪費了。
所以,如果列表元素可以按照某種算法推算出來,那我們是否可以在循環的過程中不斷推算出后續的元素呢?這樣就不必創建完整的list,從而節省大量的空間。在Python中,這種一邊循環一邊計算的機制,稱為生成器:generator。
要創建一個generator,有很多種方法。第一種方法很簡單,只要把一個列表生成式的[]改成(),就創建了一個generator:>>>?L?=?[x?*?x?for?x?in?range(10)]
>>>?L
[0,?1,?4,?9,?16,?25,?36,?49,?64,?81]
>>>?g?=?(x?*?x?for?x?in?range(10))
>>>?g
?at?0x1022ef630>
創建L和g的區別僅在于最外層的[]和(),L是一個list,而g是一個generator。
如果要一個一個打印出來,可以通過next()函數獲得generator的下一個返回值:>>>?next(g)
0
>>>?next(g)
1
>>>?next(g)
4
>>>?next(g)
9
>>>?next(g)
16
>>>?next(g)
25
>>>?next(g)
36
>>>?next(g)
49
>>>?next(g)
64
>>>?next(g)
81
>>>?next(g)
Traceback?(most?recent?call?last):
File?"",?line?1,?in?
StopIteration
如果生成器中沒有更過元素時,調用next(g)會拋出StopIteration的錯誤
所以,我們創建了一個generator后,基本上永遠不會調用next(),而是通過for循環來迭代它,并且不需要關心StopIteration的錯誤:>>>?g?=?(x?*?x?for?x?in?range(10))
>>>?for?n?in?g:
...?????print(n)
...
0
1
4
9
16
25
36
49
64
81
正則表達式
re模塊。常用正則表達式符號:
常用語法函數:
總結
以上是生活随笔為你收集整理的python正则表达式生成器_Python学习之路-装饰器生成器正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【学习笔记】第四章——文件 I(文件管理
- 下一篇: 【学习笔记】第二章——处理机调度的概念、