python函式裝飾器,重點必須掌握(二)

2021-10-10 08:17:42 字數 2998 閱讀 1353

繼續說

4.未知型別,未知個數引數

(*args)可以表示整型,浮點型,字串,列表,元組等引數。例子①:

def

func_1

(*args)

:print

(args)

print

(*args)

func_1(1,

4.44444

,'abc',[

1,'扒點剛貨'],

(2,'badianganghuo'

))

執行結果:

(1,

4.44444

,'abc',[

1,'扒點剛貨'],

(2,'badianganghuo'))

14.44444 abc [1,

'扒點剛貨'](

2,'badianganghuo'

)

(**args)表示字典型別引數。呼叫函式傳遞引數的時候,表示方法為(鍵 = 值)。例子②:

def

func_2

(a,b,

**kwargs)

:print

(a)print

(b)print

(kwargs)

​func_2(a =

'扒點剛貨'

,b =

'badianganghuo'

,c =

'扒點剛貨'

,d =

'badianganghuo'

)

執行結果:

扒點剛貨

badianganghuo

綜上:當引數都是未知的時候,一般寫成(*args, **kwargs)。

綜合例子:

def

func_3

(*args,

**kwargs)

:print

(args)

print

(kwargs)

​func_3(1,

4.44444

,'abc',[

1,'扒點剛貨'],

(2,'badianganghuo'

),a=

'扒點剛貨'

, b=

'badianganghuo'

)

執行結果:

(1,

4.44444

,'abc',[

1,'扒點剛貨'],

(2,'badianganghuo'))

三、內嵌函式

在函式體內置立另外乙個函式(物件)是合法的,這種函式叫內部/內嵌函式。

1.普通內嵌

例子:

def

foo():

defbar()

:print

('bar() called'

)print

('foo() called'

) bar()​

foo(

)

執行結果:

foo(

) called

bar(

) called

2.閉包

如果內部函式引用了函式外定義的物件,此時把這個特別的內部函式叫做閉包。例子:

num_1 =

1def

func_1()

: num_2 =

2def

func_2()

: num_3 = num_1 + num_2

print

('{}加上{}等於{}'

.format

(num_1,num_2,num_3)

)return func_2

​fun = func_1(

)fun(

)

執行結果:

1加上2等於3
注意:fun = func_1()是呼叫外部函式,並且複製給fun,因為func_1返回值為func_2(類似於乙個變數名),隨意fun等同於func_2,func_2()就是呼叫內部函式。

四、函式裝飾器

裝飾器是在函式呼叫之上的裝飾。當不想改變已經定義好的函式名稱,且要對該函式進行加工的時候,可以使用函式裝飾器。

比如當乙個函式func1在很多地方被呼叫,現在要呼叫它,可是又得需要對它進行一些改變,就可以使用函式裝飾器。

1.函式裝飾器語法

@decorator(dec_opt_args)

deffun2bdecorated

(func_opt_args):.

..

裝飾器的語法是用@開頭,接著是裝飾器的函式的名字和可選的引數,緊跟著裝飾器宣告的是被修飾的函式和裝飾器函式的可選引數。

例子:

def

decor

(func)

:print

('start'

) func(

)print

('有10000粉絲'

)print()

print

('end')​

@decor

deffunc_2()

:#已知函式,不建議更改

print

('我是扒點剛貨'

)

執行結果:

start

我是扒點剛貨

有10000粉絲

end

時間有限,明天詳細展開多個函式裝飾器共同使用,裝飾器規範寫法,以及多個裝飾器的引數傳遞,多層返回值等。

python學習記錄 裝飾器(重點)

裝飾器不是乙個新的概念,而是空間名稱,閉包函式等等的組合就是裝飾器 裝飾 給函式增加額外的功能 器 就是工具 裝飾器的核心思想 在不改變原有函式的 情況和原有呼叫方式的基礎上增加額外的功能 def index pass index 給index函式統計執行時間 儲備知識 time模組 import ...

python 裝飾器重要在哪

要理解什麼是裝飾器,您首先需要熟悉python處理函式的方式。從它的觀點來看,函式和物件沒有什麼不同。它們有屬性,可以重新分配 def func print hello from func func hello from func new func func new func hello from ...

python裝飾器詳解(重點)

你會python嘛?我會!那你給我講下python裝飾器吧!python裝飾器啊?我沒用過哎 簡言之,python裝飾器就是用於拓展原來函式功能的一種函式,這個函式的特殊之處在於它的返回值也是乙個函式,使用python裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能。一般而言,我們要想拓...