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

python裝飾器相當于函數(shù)的調(diào)用方式

 更新時間:2019年12月27日 10:27:10   作者:vwangwang  
今天小編就為大家分享一篇python裝飾器相當于函數(shù)的調(diào)用方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

1. 普通裝飾器

 import logging
 
 1. foo = use_loggine(foo)
 def use_loggine(func):
 def wrapper():
  logging.warn("%s is running " % func.__name__)
  return func()
 return wrapper
 
 @use_loggine
 def foo():
 print "aaa"
 foo()
 print foo.__name__

2. func 需要參數(shù):

foo = use_loggine(foo) 第一個參數(shù)就是func這個函數(shù)對象,不包含參數(shù)foo(params)

 def use_loggine(func):
 def wrapper(name):
  logging.warn("%s is running " % func.__name__)
  return func(name)
 return wrapper
 
 
 @use_loggine
 def foo(name):
 print "name is %s" % name

3. 裝飾器帶參數(shù)

 foo = use_logging('warn')(foo) 還是把被裝飾的函數(shù)當做參數(shù)賦給裝飾器

 def use_logging(level):
 def decorator(func):
 def wrapper(*args, **kwargs):
  if level == 'warn':
  logging.warn("%s is running" % func.__name__)
  elif level == 'info':
  logging.warn("%s is running" % func.__name__)
  return func(*args)
 return wrapper
 return decorator
 
 @use_logging('warn')
 def foo(name):
 print "i am %s" % name
 
 foo = use_logging('warn')(foo)
 print foo.__name__
 foo('foo')

4. 類裝飾器,還是把被裝飾的函數(shù)當做參數(shù)賦給裝飾器

 foo = Foo(params)(func)
 
 class Foo(object):
 def __init__(self, name):
 self.name = name
 
 def __call__(self, func):
 def aa():
  print "class decorator running"
  print "name is :%s" % self.name
  func()
  print 'class decorator ending'
 return aa

 @Foo("hello")
 def bar():
 print "world"
 
 bar()
 
 @deco
 def foo()
 pass
 
 foo = deco(foo)
 
 @deco(xx)
 def foo():
 pass
 
 foo = deco(xx)(foo)

5. 類方法裝飾器

類方法裝飾器和其他裝飾器沒有什么區(qū)別,只不過在裝飾器內(nèi)部返回的函數(shù)中,第一個參數(shù)是固定的,是調(diào)用方法的對象本身,如

果是實例對象,就是self,是類方法的話,就是cls,靜態(tài)方法的話,沒有第一個參數(shù)。

 from functools import wraps

 
 def method_decor(func):
 @wraps(func)
 def wrapper(*args, **kwargs):
  try:
  u = func(*args, **kwargs)
  return u
  except Exception as e:
  args[0].bb() # args[0]就是self或者cls??梢栽赼rgs前面定義self,更加方便u = func(self,*args, **kwargs)
  return 'an Exception raised.'
 
 return wrapper
 
 
 class Foo(object):
 
 @method_decor
 def aa(self):
  # print("This is wraped method")
  raise Exception('aa')
 
 def bb(self):
  print("This is called method")
 
 
 
 a = Foo()
 a.aa()

以上這篇python裝飾器相當于函數(shù)的調(diào)用方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python按照多個條件排序的方法

    python按照多個條件排序的方法

    今天小編就為大家分享一篇python按照多個條件排序的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • python實現(xiàn)簡單五子棋小游戲

    python實現(xiàn)簡單五子棋小游戲

    這篇文章主要為大家詳細介紹了python實現(xiàn)簡單五子棋小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Python求字符串的長度示例代碼

    Python求字符串的長度示例代碼

    這篇文章主要介紹了Python求字符串的長度,求一個字符串的長度,在main函數(shù)中輸入字符串,并輸出其長度,文中給大家介紹了Python計算字符串長度的函數(shù),需要的朋友可以參考下
    2023-02-02
  • jenkins配置python腳本定時任務(wù)過程圖解

    jenkins配置python腳本定時任務(wù)過程圖解

    這篇文章主要介紹了jekins配置python腳本定時任務(wù)過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • python圖片二值化提高識別率代碼實例

    python圖片二值化提高識別率代碼實例

    這篇文章主要介紹了python圖片二值化提高識別率代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • python requests完成接口文件上傳的案例

    python requests完成接口文件上傳的案例

    這篇文章主要介紹了python requests完成接口文件上傳的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 理解Django 中Call Stack機制的小Demo

    理解Django 中Call Stack機制的小Demo

    這篇文章主要介紹了理解Django 中Call Stack 機制的小Demo,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Python內(nèi)置函數(shù) next的具體使用方法

    Python內(nèi)置函數(shù) next的具體使用方法

    這篇文章主要介紹了Python內(nèi)置函數(shù) next的具體使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • python調(diào)用webservice接口的實現(xiàn)

    python調(diào)用webservice接口的實現(xiàn)

    這篇文章主要介紹了python調(diào)用webservice接口的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • python?selenium保存圖片最好的兩種方法

    python?selenium保存圖片最好的兩種方法

    大家好,本篇文章主要講的是python?selenium保存圖片最好的兩種方法,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01

最新評論