最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python函數(shù)修飾符@的使用方法解析

 更新時間:2019年09月02日 10:02:00   作者:gdjlc  
這篇文章主要介紹了python函數(shù)修飾符@的使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

python函數(shù)修飾符@的作用是為現(xiàn)有函數(shù)增加額外的功能,常用于插入日志、性能測試、事務(wù)處理等等。

創(chuàng)建函數(shù)修飾符的規(guī)則:

(1)修飾符是一個函數(shù)

(2)修飾符取被修飾函數(shù)為參數(shù)

(3)修飾符返回一個新函數(shù)

(4)修飾符維護被維護函數(shù)的簽名

例子1:被修飾函數(shù)不帶參數(shù)

def log(func):
  def wrapper():
    print('log開始 ...')
    func()
    print('log結(jié)束 ...')
  return wrapper
@log
def test():
  print('test ..')
test()

運行結(jié)果:

log開始 ...
test ..
log結(jié)束 ...

例子2:使用functools模塊提供的修改函數(shù)屬性的方法wraps

def log(func):
  def wrapper():
    print('log開始 ...')
    func()
    print('log結(jié)束 ...')
  return wrapper
@log
def test1():
  print('test1 ..')

def test2():
  print('test2 ..')
print(test1.__name__)
print(test2.__name__)

運行結(jié)果:

wrapper
test2

可見test1的函數(shù)名稱變了,如果某些代碼用到就會出問題,可以使用functools模塊提供的修改函數(shù)屬性的方法wraps

from functools import wraps

def log(func):
  @wraps(func)
  def wrapper():
    print('log開始 ...')
    func()
    print('log結(jié)束 ...')
  return wrapper
@log
def test1():
  print('test1 ..')

def test2():
  print('test2 ..')

print(test1.__name__)
print(test2.__name__)

運行結(jié)果:

test1
test2

例子3:被修飾函數(shù)帶參數(shù)

from functools import wraps
def log(func):
  @wraps(func)
  def wrapper(*args,**kwargs):
    print('log開始 ...',func.__name__)
    ret = func(*args,**kwargs)
    print('log結(jié)束 ...')
    return ret
  return wrapper
@log
def test1(s):
  print('test1 ..', s)
  return s

@log
def test2(s1, s2):
  print('test2 ..', s1, s2)
  return s1 + s2
test1('a')
test2('a','bc')

運行結(jié)果:

log開始 ... test1
test1 .. a
log結(jié)束 ...
log開始 ... test2
test2 .. a bc
log結(jié)束 ...

例子4:修飾符帶參數(shù),需要比上面例子多一層包裝

from functools import wraps

def log(arg):  
  def _log(func):
    @wraps(func)
    def wrapper(*args,**kwargs):
      print('log開始 ...',func.__name__, arg)      
      ret = func(*args,**kwargs)
      print('log結(jié)束 ...')
      return ret
    return wrapper
  return _log
 
@log('module1')
def test1(s):
  print('test1 ..', s)
  return s

@log('module1')
def test2(s1, s2):
  print('test2 ..', s1, s2)
  return s1 + s2
test1('a')
test2('a','bc')

運行結(jié)果:

log開始 ... test1 module1
test1 .. a
log結(jié)束 ...
log開始 ... test2 module1
test2 .. a bc
log結(jié)束 ...

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

相關(guān)文章

  • Python字典get()函數(shù)使用詳解

    Python字典get()函數(shù)使用詳解

    在Python中,字典對象有一個名為get()的方法,它可以用來獲取字典中鍵對應的值,該方法接受一個鍵作為參數(shù),并返回該鍵對應的值,如果鍵不存在于字典中,則返回None,本文就給大家介紹一下Python get()函數(shù)使用方法,需要的朋友可以參考下
    2023-07-07
  • Python實現(xiàn)對excel文件列表值進行統(tǒng)計的方法

    Python實現(xiàn)對excel文件列表值進行統(tǒng)計的方法

    這篇文章主要介紹了Python實現(xiàn)對excel文件列表值進行統(tǒng)計的方法,涉及Python基于win32com組件操作表格文件的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 在PyCharm中批量查找及替換的方法

    在PyCharm中批量查找及替換的方法

    今天小編就為大家分享一篇在PyCharm中批量查找及替換的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Django admin.py 在修改/添加表單界面顯示額外字段的方法

    Django admin.py 在修改/添加表單界面顯示額外字段的方法

    今天小編就為大家分享一篇Django admin.py 在修改/添加表單界面顯示額外字段的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python optparse模塊及簡單使用

    Python optparse模塊及簡單使用

    optparse,是一個更夠讓程序設(shè)計人員輕松設(shè)計出簡單明了、易于使用、符合標準的Unix命令例程式的Python模塊,生成使用和幫助信息,這篇文章主要介紹了Python optparse模塊簡單使用,需要的朋友可以參考下
    2022-12-12
  • python中urllib.request和requests的使用及區(qū)別詳解

    python中urllib.request和requests的使用及區(qū)別詳解

    這篇文章主要介紹了python中urllib.request和requests的使用及區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python處理字符串中文(漢字)編碼的實例

    Python處理字符串中文(漢字)編碼的實例

    這篇文章主要介紹了Python處理字符串中文(漢字)編碼的實例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 分享4個Python中高效省時的技巧

    分享4個Python中高效省時的技巧

    小伙伴們?nèi)粘9ぷ髦卸急夭豢缮俚厥褂肞ython實現(xiàn)一些簡單的功能,但是不同的人所編寫的代碼執(zhí)行效率往往是不同的,下面這篇文章主要給大家介紹了4個Python中高效的技巧,需要的朋友可以參考下
    2022-05-05
  • 深入了解Django中間件及其方法

    深入了解Django中間件及其方法

    這篇文章主要介紹了簡單了解Django中間件及其方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • python3 解決requests出錯重試的問題

    python3 解決requests出錯重試的問題

    這篇文章主要介紹了python3 解決requests出錯重試的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04

最新評論

海城市| 阿拉善盟| 青海省| 永胜县| 镶黄旗| 哈尔滨市| 菏泽市| 巧家县| 迁西县| 洮南市| 大安市| 印江| 朝阳区| 米脂县| 宁陕县| 镇康县| 上饶市| 长岛县| 乌海市| 伽师县| 文昌市| 炎陵县| 烟台市| 白山市| 五家渠市| 玉溪市| 沈阳市| 神池县| 肇庆市| 河北区| 松滋市| 贡山| 商丘市| 青铜峡市| 罗定市| 怀来县| 公安县| 赤城县| 蚌埠市| 清涧县| 游戏|