python返回函式及裝飾器

2021-09-27 03:16:00 字數 1718 閱讀 9757

返回函式

pass
裝飾器函式

在執行原函式的基礎上,處理一些額外資訊,eg.輸出執行時間、輸出函式名稱等

摘錄了廖雪峰的python學習**的一些筆記:

裝飾器 - 廖雪峰的官方**

以**示人

# -*- coding: utf-8 -*-

"""created on sun sep 15 11:12:50 2019

@author: yugar

"""'version1'

# *引數接收 元組,**引數接收 字典

deflog

(func)

:# 引數設定為* ** 是因為這樣可以接受任何引數

def(

*args,

**kw)

:print

('call %s():'

% func.__name__)

# 輸出函式名

return func(

*args,

**kw)

@log

# 等價於 now = log(now)

defnow()

:print

('2019-9-15'

)# 現在的now()依然存在,只是now指向了乙個新的函式,

'version2'

deflog

(txt)

:# 'execute'

defdecorator

(func)

:# now

def(

*args,

**kw)

:print

('%s %s():'

%(txt, func.__name__)

)return func(

*args,

**kw)

return decorator

@log(

'execute'

)# => now = log('execute')(now)

defnow()

:print

('2019-9-15'

)# 現在的now()依然存在,只是now指向了乙個新的函式,

print

(now.__name__)

now(

)# 需要用 @functools.wrpas(func) 包裹

# 讓其顯示原來呼叫的函式名

version2可以多顯示乙個引數資訊p,而引數p事先放在@log()中

'version3'

import functools

deflog

(func)

: @functools.wraps(func)

def(

*args,

**kw)

:print

('call %s():'

% func.__name__)

return func(

*args,

**kw)

@log

defnow()

:pass

print

(now.__name__)

# 『now'

以下觀點摘錄了一些碼友關於裝飾器的一些理解:

python返回函式 python中返回函式

python的函式不但可以返回int str list dict等資料型別,還可以返回函式!例如,定義乙個函式 f 我們讓它返回乙個函式 g,可以這樣寫 deff print call f 定義函式g defg print call g 返回函式g return g 仔細觀察上面的函式定義,我們在函...

python返回 python 返回函式

返回函式 1.高階函式除了能夠接收函式作為引數外,還能把函式作為結果返回 2.例如乙個求和函式,通常情況下的定義以及呼叫 def sum nums x 0for n in nums x x n return x sum 1,2,3,4,5 不返回求和的結果,而是返回求和的函式 def sum 1 n...

python 返回函式

返回函式 python的函式不但可以返回int str list dict等資料型別,還可以返回函式!例如,定義乙個函式 f 我們讓它返回乙個函式 g,可以這樣寫 deff print call f 定義函式g defg print call g 返回函式g return g仔細觀察上面的函式定義,...