91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Python中應用裝飾器

發布時間:2021-05-12 17:01:49 來源:億速云 閱讀:101 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關如何在Python中應用裝飾器,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

1. 運行業務函數fun()同時打印運行花費的時間

import time
def dec(fun):
  start = time.time()
  fun()
  end = time.time()
  a = end - start
  print a
def myfun():
  print 'run myfunction'
dec(myfun)

運行結果

(virt2) root@ubuntu:/home/z# python z.py
run myfunction
0.00108599662781

但是每次運行myfun都要調用dec,下面作下變動解決這個問題

2.

import time
def dec(fun):
  def wrap():
    start = time.time()
    fun()
    end = time.time()
    a = end - start
    print a
  return wrap
def myfun():
  print 'run myfunction'
myfun=dec(myfun)
myfun()

運行結果:

(virt2) root@ubuntu:/home/z# python z.py
run myfunction
0.00122618675232

這個裝飾器dec就實現了,并且不影響函數myfun功能

3. 裝飾器@符

import time
def dec(fun):
  def wrap():
    start = time.time()
    fun()
    end = time.time()
    a = end - start
    print a
  return wrap
@dec
def myfun():
  print 'run myfunction'
myfun()

結果

(virt2) root@ubuntu:/home/z# python z.py
run myfunction
0.000470876693726

使用了@后,就不用給myfun重新賦值了

@dec就相當于myfun=dec(myfun)

例子:

def level(leveel):
  def debug(func):
    def wrapper(*args, **kwargs):
      print("[DEBUG]: enter {}()".format(func.__name__),leveel)
      return func(*args, **kwargs)
    return wrapper
  return debug
@level(leveel='debuging')
def say(something):
  print ("hello {}!".format(something))
say(123)

輸出:

('[DEBUG]: enter say()', 'debuging')
hello 123!

'''
class logging(object):
  def __init__(self, func):
    self.func = func
  def __call__(self, *args, **kwargs):
    print ("[DEBUG]: enter function {func}()".format(
      func=self.func.__name__))
    return self.func(*args, **kwargs)
@logging
def say(something):
  print ("say {}!".format(something))
'''
class logging(object):
  def __init__(self, level='INFO'):
    self.level = level
  def __call__(self, func): # 接受函數
    def wrapper(*args, **kwargs):
      print ("[{level}]: enter function {func}()".format(
        level=self.level,
        func=func.__name__))
      func(*args, **kwargs)
    return wrapper #返回函數
@logging(level='INFO')
def say(something):
  print ("say {}!".format(something))
say(123)

輸出:

[INFO]: enter function say()
say 123!

python有哪些常用庫

python常用的庫:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。

上述就是小編為大家分享的如何在Python中應用裝飾器了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

五莲县| 岳池县| 舟山市| 柏乡县| 新密市| 万州区| 灵川县| 宜君县| 纳雍县| 大方县| 邹城市| 深水埗区| 镇沅| 宝鸡市| 桦南县| 昌黎县| 双牌县| 浏阳市| 黄浦区| 新和县| 禹城市| 莫力| 黎川县| 宽城| 浙江省| 龙山县| 中卫市| 盱眙县| 绩溪县| 阳西县| 桐柏县| 古蔺县| 白河县| 色达县| 岳池县| 隆安县| 邳州市| 迁安市| 麟游县| 惠安县| 邵武市|