python 高階程式設計 三

2021-06-18 22:00:24 字數 833 閱讀 2369

decorator

作用在某個函式上面,將其函式指標作為引數傳入,然後新增一些操作,最後返回原來函式

兩種方式,一種是無參的:

def decorator(func):

def new_func(*args,**kws):

print "add some operations"

func(*args,**kws)

return new_func

@decorator

def test(x):

print x

test("hello")

在呼叫 test()  的時候:

一  先將 test 當做引數傳入 decorator ,

二 然後定義了乙個函式 new_func 來接收 test的引數,

三  執行額外的操作

四 執行 test

五  返回 new_func

帶引數的原理跟上面的很類似,只是多了一層函式,用來接收傳入的引數值

def decorator2(*arg):

def getfunc(func):

def another_func(*args,**kws):

print arg[0]

func(*args,**kws)

return another_func

return getfunc

@decorator2("d test")

def test_2(x):

print "the test2"

test_2("hello")

python程式設計高階

1 開閉原則 遵循開發封閉原則,雖然在這個原則是用的物件導向開發,但是也適用於函式式程式設計,簡單來說,它規定已經實現的功能 不允許被修改,但可以被擴充套件,即 封閉 已實現的功能 塊 開放 對擴充套件開發 2 可使用裝飾器實現開閉原則 裝飾器是不對原函式內部 進行修改的前提下,在外部增加一些功能,...

python高階程式設計

包和模組的概念及is和 的區別1.包 包含多個python檔案 模組的資料夾,並且資料夾中有乙個名稱為init.py的特殊宣告檔案,那麼這個資料夾就是乙個包 模組包 可以將大量功能相關的python模組包含起來統一管理,同樣也可以被其他模組通過import關鍵字引入重複使用封裝的模組和 2.模組 p...

Python高階程式設計

list comprehension 1.列表推導 i for i in range 10 if i 2 0 0,2,4,6,8 i也可以是乙個函式,該風格比c語言思想的 風格效率高 2.enumerate 取到了序列中的序列號好內容 forindex,item inenumerate sequen...