Python笔记-函数装饰器的缺点
生活随笔
收集整理的這篇文章主要介紹了
Python笔记-函数装饰器的缺点
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
裝飾器的好處,復(fù)用了代碼,缺點(diǎn)就是原函數(shù)的元信息不見(jiàn)了
比如函數(shù)docstring、_name_、參數(shù)列表
如下代碼:
def use_logging(level = "debug"):def decorator(func):def wrapper(*args, **kwargs):print("[%s] %s is running" % (level, func.__name__))return func(*args, **kwargs)return wrapperreturn decoratordef bar1():print("i am bar1")def bar2():print("i am bar2")if __name__ == "__main__":#這里就是帶參數(shù)的原形f = use_logging(level = "info")(bar1)f()print(f.__name__)print(f.__doc__)程序運(yùn)行截圖如下:
這里想讓他打印bar1。
這里要使用functools
如下代碼:
import functools def use_logging(level = "debug"):def decorator(func):@functools.wraps(func)def wrapper(*args, **kwargs):print("[%s] %s is running" % (level, func.__name__))return func(*args, **kwargs)return wrapperreturn decoratordef bar1():print("i am bar1")def bar2():print("i am bar2")if __name__ == "__main__":#這里就是帶參數(shù)的原形f = use_logging(level = "info")(bar1)f()print(f.__name__)print(f.__doc__)運(yùn)行截圖如下:
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Python笔记-函数装饰器的缺点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: QML笔记-Particle的基本使用(
- 下一篇: yml的基本语法,以及java读取yml