繼續說
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裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能。一般而言,我們要想拓...