欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python裝飾器如何實(shí)現(xiàn)修復(fù)過程解析

 更新時間:2020年09月05日 11:28:22   作者:Python探索牛  
這篇文章主要介紹了Python裝飾器如何實(shí)現(xiàn)修復(fù)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

Python裝飾器(decorator)在實(shí)現(xiàn)的時候,被裝飾后的函數(shù)其實(shí)已經(jīng)是另外一個函數(shù)了(函數(shù)名等函數(shù)屬性會發(fā)生改變),

為了不影響,Python的functools包中提供了一個叫wraps的decorator來消除這樣的副作用。寫一個decorator的時候,最好在實(shí)現(xiàn)之前加上functools的wrap,

它能保留原有函數(shù)的名稱和docstring。

未加@wraps的時候:

from functools import wraps


def wrapper(func):
  # @wraps(func)
  def inner(*args, **kwargs):
    print("裝飾器工作中...")
    func(*args, **kwargs)
  return inner
@wrapper
def f1(arg):
  """
  這是一個測試裝飾器修復(fù)技術(shù)的函數(shù)
  :param arg: 隨便傳
  :return: 沒有
  """
  print(arg)

f1('呵呵')
print(f1.__name__,f1.__doc__)

打印結(jié)果是:

但是加上@wraps以后:

from functools import wraps


def wrapper(func):
  @wraps(func)
  def inner(*args, **kwargs):
    print("裝飾器工作中...")
    func(*args, **kwargs)
  return inner
@wrapper
def f1(arg):
  """
  這是一個測試裝飾器修復(fù)技術(shù)的函數(shù)
  :param arg: 隨便傳
  :return: 沒有
  """
  print(arg)

f1('呵呵')
print(f1.__name__,f1.__doc__)

打印結(jié)果是:

其中主要的就是兩個變量:

1、顯示 正在執(zhí)行的函數(shù)的名稱 f.name

2、顯示 正在執(zhí)行的函數(shù)的注釋 f.doc

簡單來說就是:

如果沒使用@wraps,當(dāng)A調(diào)用了裝飾器B的話,即使A.name,返回的會是裝飾器B的函數(shù)名稱,而不是A的函數(shù)名稱

如果使用了@wraps,當(dāng)A調(diào)用了裝飾器B的話,A.__ name__返回的會是A函數(shù)的名稱,而不是飾器B的名稱,

這也即使常說的@wraps是裝飾器的修復(fù)技術(shù),

實(shí)際就是修復(fù)還原了A的__ name__變量,同理__ doc__變量也是一樣。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python sublime安裝及配置過程詳解

    Python sublime安裝及配置過程詳解

    這篇文章主要介紹了Python sublime安裝及配置過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • Python實(shí)現(xiàn)vlog生成器的示例代碼

    Python實(shí)現(xiàn)vlog生成器的示例代碼

    vlog,全稱為Video?blog,意為影音博客,也有翻譯為微錄。本文將嘗試用Python基于Moviepy從一個文本文件中自動生成一個視頻格式的vlog,感興趣的可以了解一下
    2023-01-01
  • python實(shí)現(xiàn)線性回歸的示例代碼

    python實(shí)現(xiàn)線性回歸的示例代碼

    線性回歸就是通過多次取點(diǎn),找出符合函數(shù)的曲線,那么就可以完成一維線性回歸,本文通過實(shí)例代碼給大家介紹python實(shí)現(xiàn)線性回歸的相關(guān)知識,感興趣的朋友一起看看吧
    2022-02-02
  • PyTorch簡單手寫數(shù)字識別的實(shí)現(xiàn)過程

    PyTorch簡單手寫數(shù)字識別的實(shí)現(xiàn)過程

    Pytorch是熱門的深度學(xué)習(xí)框架之一,通過經(jīng)典的MNIST數(shù)據(jù)集進(jìn)行快速的pytorch入門,這篇文章主要給大家介紹了關(guān)于PyTorch簡單手寫數(shù)字識別的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • Python3合并兩個有序數(shù)組代碼實(shí)例

    Python3合并兩個有序數(shù)組代碼實(shí)例

    這篇文章主要介紹了Python3合并兩個有序數(shù)組代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Keras: model實(shí)現(xiàn)固定部分layer,訓(xùn)練部分layer操作

    Keras: model實(shí)現(xiàn)固定部分layer,訓(xùn)練部分layer操作

    這篇文章主要介紹了Keras: model實(shí)現(xiàn)固定部分layer,訓(xùn)練部分layer操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python高級過濾器之filter函數(shù)詳解

    Python高級過濾器之filter函數(shù)詳解

    在Python中,filter()是一個非常有用的內(nèi)置函數(shù),它能夠根據(jù)指定的函數(shù)來篩選出可迭代對象中滿足條件的元素,本文將從入門到精通,全面介紹filter()函數(shù)的用法和相關(guān)知識點(diǎn)
    2023-08-08
  • python擴(kuò)展庫numpy入門教程

    python擴(kuò)展庫numpy入門教程

    這篇文章主要為大家介紹了python擴(kuò)展庫numpy入門教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11
  • 使用PYTHON解析Wireshark的PCAP文件方法

    使用PYTHON解析Wireshark的PCAP文件方法

    今天小編就為大家分享一篇使用PYTHON解析Wireshark的PCAP文件方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python?PyQt5?開啟線程防止界面卡死閃退問題解決

    Python?PyQt5?開啟線程防止界面卡死閃退問題解決

    這篇文章主要介紹了Python?PyQt5?開啟線程避免界面卡死閃退,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06

最新評論