python函式裝飾器,重點必須掌握(二)
繼續說
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'))
1 4.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
{'c': '扒點剛貨', 'd': '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'))
{'a': '扒點剛貨', 'b': 'badianganghuo'}
三、內嵌函式
在函式體內建立另外一個函式(物件)是合法的,這種函式叫內部/內嵌函式。
1.普通內嵌
例子:
def foo():
def bar():
print('bar() called')
print('foo() called')
bar()
foo()
執行結果:
foo() called
bar() called
2.閉包
如果內部函式引用了函式外定義的物件,此時把這個特別的內部函式叫做閉包。例子:
num_1 = 1
def func_1():
num_2 = 2
def 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)
def fun2Bdecorated(func_opt_args):
...
裝飾器的語法是用@開頭,接著是裝飾器的函式的名字和可選的引數,緊跟著裝飾器宣告的是被修飾的函式和裝飾器函式的可選引數。
例子:
def decor(func):
print('start')
func()
print('有10000粉絲')
print('是個成熟的公眾號')
print('end')
#return wrapper
@decor
def func_2():
#已知函式,不建議更改
print('我是扒點剛貨')
執行結果:
start
我是扒點剛貨
有10000粉絲
是個成熟的公眾號
end
時間有限,明天詳細展開多個函式裝飾器共同使用,裝飾器規範寫法,以及多個裝飾器的引數傳遞,多層返回值等。
相關文章
- Python之函式裝飾器Python函式
- python裝飾器管理函式和類的注意點Python函式
- 裝飾器函式函式
- Python裝飾函式Python函式
- Python函式裝飾器高階用法Python函式
- 裝飾器,匿名函式函式
- 函式物件、裝飾器、閉包函式函式物件
- python函式程式設計 返回函式 匿名函式 裝飾器 偏函式Python函式程式設計
- 前端必須掌握的知識點前端
- Python基礎之特殊的函式--裝飾器和偏函式Python函式
- Python 中級學習之函式裝飾器Python函式
- python函式修飾器(decorator)Python函式
- 如何使用CSS建立高階動畫,這個函式必須掌握CSS動畫函式
- Python函數語言程式設計-高階函式、匿名函式、裝飾器、偏函式Python函數程式設計函式
- 閉包函式,裝飾器詳解函式
- 利用裝飾器給python的函式加上型別限制Python函式型別
- Android 之 Notification 必須掌握知識點Android
- python裝飾器2:類裝飾器Python
- Day10:函式與裝飾器函式
- 13. 閉包函式與裝飾器函式
- Python學習之路26-函式裝飾器和閉包Python函式
- 作為程式設計師必須掌握的Java虛擬機器中的22個重難點程式設計師Java虛擬機
- Android Application物件必須掌握的七點AndroidAPP物件
- Python裝飾器探究——裝飾器引數Python
- OpenHarmony自定義構建函式:@Builder裝飾器函式UI
- Oracle10g rac 必須掌握的知識二Oracle
- 測開之函式進階· 第7篇《裝飾器裝飾類,通用裝飾器,有啥區別呢?》函式
- Python 裝飾器Python
- Python裝飾器Python
- 裝飾器 pythonPython
- Python爬蟲需要學哪些東西?這些知識點必須掌握!Python爬蟲
- 學好Spark/Kafka必須要掌握的Scala技術點(三)高階函式、方法、柯里化、隱式轉換SparkKafka函式
- JavaScript大師必須掌握的12個知識點JavaScript
- PHP初學者必須掌握的10個知識點PHP
- 為什麼 Python 沒有函式過載?如何用裝飾器實現函式過載?Python函式
- Git中~你必須掌握的!Git
- Java Annotation 必須掌握的特性Java
- python必須安裝pip嗎Python