麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Python > 正文

Python裝飾器簡單用法實例小結

2020-02-15 23:54:28
字體:
來源:轉載
供稿:網友

本文總結分析了Python裝飾器簡單用法。分享給大家供大家參考,具體如下:

裝飾器在python中扮演著很重要的作用,例如插入日志等,裝飾器可以為添加額外的功能同時又不影響業務函數的功能。

比如,運行業務函數fun()同時打印運行花費的時間

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

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

運行結果

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

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

2.

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

運行結果:

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

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

3. 裝飾器@符

import timedef dec(fun):  def wrap():    start = time.time()    fun()    end = time.time()    a = end - start    print a  return wrap@decdef 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)@loggingdef 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)

輸出:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品久久久久久影院8一贰佰 | 4p一女两男做爰在线观看 | 国产毛片自拍 | 日韩大片在线永久观看视频网站免费 | av在线在线 | 精品国产亚洲人成在线 | 嗯哈~不行好大h双性 | 国产一精品久久99无吗一高潮 | 激情久久一区二区 | 91网在线播放 | 97超级碰碰人国产在线观看 | 免费一级毛片电影 | 精品中文字幕视频 | 日韩黄在线| 欧美精品在线视频观看 | 国产自在自线午夜精品视频在 | 欧美激情天堂 | 毛片在线看免费 | 羞羞的视频免费观看 | 国产一区二区三区视频免费 | 欧洲黄视频 | 看国产精品 | 久久午夜神器 | 久久精品国产99久久久古代 | 国产91在线免费 | 午夜视频成人 | av影片在线观看 | 久久精品亚洲成在人线av网址 | 国产在线精品一区二区夜色 | 亚洲网视频 | 久久人体| 欧美成人性生活片 | 精品亚洲综合 | 91国内精品久久久久免费影院 | 久久新地址 | 羞羞视频免费观看网站 | 污视频在线免费播放 | 日本精品久久久久 | 男女生羞羞视频网站在线观看 | 2017亚洲男人天堂 | 亚洲午夜精品视频 |