python重點語法總結(二) 操作符

2021-08-04 22:32:33 字數 2100 閱讀 5663

2、@操作符

@符號用於修飾函式,該修飾符後面接乙個函式名後,在第下一行再接乙個函式定義,這個函式定義可以是模組或類方法,不允許修飾類。修飾符@加乙個函式名相當於該函式,同時將後面修飾的函式作為引數傳遞,需要返回乙個可以呼叫的函式,並且這個返回的函式與修飾的函式名同名。下面通過幾個例項進行解釋:

例項1:

def decorator(decorated_function):

print("hello, wang shuo")

@decorator

def decorated_funciton(a,b):

print(a+b)

輸出:

hello, wang shuo

修飾函式在定義時就會執行,因為前面說道@後面的函式會將修飾的函式decorated_function作為引數,同時返回乙個可以呼叫的函式,這個返回的函式與修飾的函式同名。所以在定義時就要執行,因為需要返回乙個可呼叫的函式。所以,在定義時執行了print("hello, wang shuo"),但是,由於沒有返回可以呼叫的東西,所以通過@修飾後就沒有可以呼叫的東西,呼叫decorated_function(a,b)是不行的,因為通過@修飾後它代表的是decorator返回的內容,由於沒有返回,也就無法呼叫,所以這種情況呼叫decorated_function(3,4)會報錯。typeerror: 'nonetype' object is not callable

例項2:

def decorator(decorated_function):

print("hello, wang shuo first time")

def actual_function(*args):

print("hello,wang shuo second time")

return actual_function

@decorator

def decorated_function(a,b):

print(a+b)

print("meet wang shuo")

decorated_function(2,3)

輸出:hello, wang shuo first time

meet wang shuo

hello,wang shuo second time

這裡首先輸出了「hello, wang shuo first time」,說明在執行print之前就執行了decorator函式中的內容,該函式返回乙個可以呼叫的內容,即actual_function,於是,被@修飾過的函式就變成了這個actual_fuction,於是在呼叫decorated_function(2,3)時依然輸出「hello,wang shuo second time」,即actual_function中的內容。

例項3:

def decorator(dec_fun):

print("hello, wang shuo first time")

def actual_function(*args):

print("hello,wang shuo second time")

dec_fun(*args)

return actual_function

@decorator

def decorated_function(a,b):

print(a+b)

print("meet wang shuo")

decorated_function(2,3)

輸出:hello, wang shuo first time

meet wang shuo

hello,wang shuo second time

5可以看到這次輸出了a+b的內容,這是因為在actual_function中呼叫的被修飾的函式,因為被修飾的函式作為引數傳遞給函式decorator,而在返回的函式中呼叫了這個函式dec_fun(*args),所以在使用decorated_function過程中也會使用該函式的功能。

總結:通過@修飾的函式能夠執行那些內容不是看被修飾函式的內容,而是需要看用來修飾的函式的內容,即decorator,它的返回可呼叫的內容才是最終的執行函式,在呼叫這個被修飾的函式(decorated_function)時,就會呼叫decortor返回的可呼叫的部分。

python 檔案操作相關 重點

注意 使用 open 方法一定要保證關閉檔案物件,即呼叫 close 方法。open 函式常用形式是接收兩個引數 檔名 file 和模式 mode file open 檔案位址 rwa 開啟方法 encoding 編碼格式 開啟方法解釋r 唯讀w只寫 會清空原先的內容 r 讀寫 w 寫讀 會清空原先...

Python語法總結

場景 去重 集合方法 s.add x s.remove x 移除x,沒有x就產生keyerror異常 s.clear 移除所有元素 s.pop 隨機返回乙個元素,並且更新s s.copy s.len x in s x not in s 集合的遍歷與定義的順序不一定一樣 應用 包含關係比較。去重複元素...

Python 基礎語法總結

預設情況下,python3原始檔以utf 8編碼,所有字串都是unicode字串 當然也可以為原始檔指定不同的編碼 第乙個字母必須是字母表中字母或 識別符號的其他部分由字母 數字和下劃線組成 識別符號對大小寫敏感 在python3中,可以用中文作為變數名,非ascll識別符號也是允許的 保留字即關鍵...