国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 簡單上手Python中裝飾器的使用

簡單上手Python中裝飾器的使用

2020-07-22 12:24Yi_Zhi_Yu Python

這篇文章主要介紹了Python中裝飾器的使用,是Python進階學習中的重要知識,需要的朋友可以參考下

Python裝飾器可以實現在代碼運行期間修改函數的上下文, 即可以定義函數在執行之前進行何種操作和函數執行后進行何種操作, 而函數本身并沒有任何的改變。

這個看起來很復雜, 實際上應用到了我之前說過的閉包的概念, 仔細看一看, 其實并不復雜。

首先, 我們先定義一個函數, 這個函數可以輸出我的個人昵稱:

?
1
2
3
def my_name():
  print "Yi_Zhi_Yu"
my_name() # Yi_Zhi_Yu

那假如我需要在個人昵稱輸出前, 在輸出我的個人uid呢, 當然, 要求是不改動現有的my_name函數, 這個時候就可以使用裝飾器了

首先, 裝飾器也是個函數, 其次, 他需要接受一個參數,該參數表示了要被裝飾的函數(即my_name):

?
1
2
3
4
5
def my_info(func):
  def wrapper(*args, **params):
    print 218
    return func(*args, **params)
  return wrapper

然后與相應的被裝飾函數關聯起來的方法就是使用@my_info寫在被裝飾函數的前面

?
1
2
3
@my_info
def my_name():
  print "Yi_Zhi_Yu"

最后, 在執行my_name的時候, 就能既輸出我的uid, 又能輸出我的昵稱了

?
1
2
3
my_name()
#218
#Yi_Zhi_Yu

在上面, 最讓我們疑惑的是裝飾器函數定義里面的wrapper函數, 裝飾器本身返回的是wrapper函數的定義, 而wrapper中則定義了對被裝飾函數(my_name)的調用, func表示的就是被裝飾函數, 說白了, 裝飾器只是把某個不得改動的函數(a)放到另一個函數(b)中, 在b里面調用a, 在調用前后就可以做所謂的看起來像裝飾的工作了。
my_info的最終返回的wrapper函數的定義, 并不是執行結果,只有當wrapper真正執行的時候, 才會真正的執行my_name方法, 這就是閉包時所說的內容。
wrapper中的參數, 實際上則是傳遞給func(實際上是my_name)的參數

因為裝飾器也是個函數, 那么裝飾器自己的能不能有參數傳遞呢??梢裕?不過需要定義一個更高階的函數, 也就是外面還要套一層函數, 比如, 我還要輸出我的自定義的一個信息,需要傳遞參數

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def c_info(text):
  def my_info(func):
    def wrapper(*args, **params):
      print text
      print 218
      return func(*args, **params)
    return wrapper
  return my_info
 
 #使用裝飾器
 @c_info("Tony")
 def my_name():
  print "Yi_Zhi_Yu"
 
 my_name()
 #Tony
 #218
 #Yi_Zhi_Yu

與前面的那個裝飾器相比, 僅僅是多了個外層, 內層也僅僅是增加了對外層傳入參數(text)的調用

總而言之, Python在函數定義中支持了對oop思想中的裝飾器的實現, 其本質也只是使用了閉包的思路, 延遲調用, 并在調用前后增加自己的其他實現內容

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人在线播放 | 人成网址 | 精品久久久久久久 | 天天干一干 | 欧美1区| 久久久久久成人 | 欧美激情视频一区二区三区 | 日韩一区二区三区在线看 | 日韩极品在线 | 毛片免费的| 中文在线a在线 | 久久亚洲精品中文字幕 | 中国黄色一级 | 中文字幕91 | 不卡黄色| 一级片观看 | 午夜午夜精品一区二区三区文 | av国产精品| 操操操小说 | 久久久久久久国产精品 | 日韩精品一二三区 | 亚洲视频一区在线观看 | 国产精品美女在线观看 | 国产精品区二区三区日本 | 韩国精品一区二区 | 欧美精品成人 | 先锋影音男人 | 99国产视频 | 免费看国产片在线观看 | 男女视频网站 | 在线观看国产视频 | 欧美成人a∨高清免费观看 亚洲国产精品尤物yw在线观看 | 另类五月 | 午夜精品久久久久久久男人的天堂 | 久久久久久久久久一区二区 | 在线观看国产 | 国产激情在线 | 在线观看亚洲免费视频 | 国产亚洲一区二区三区在线观看 | 亚洲精品一区二区三区在线 | 正在播放国产一区 |