Python之装饰器用法

您所在的位置:网站首页 华为matebook14可以无线投屏吗 Python之装饰器用法

Python之装饰器用法

#Python之装饰器用法| 来源: 网络整理| 查看: 265

什么是装饰器

装饰器是一类特殊的函数,通过在其他任意函数的上一行添加 @装饰器名 来调用装饰器。

装饰器的作用

一般用于重用为多个函数添加相同功能的代码。

装饰器基本代码 def wrapper_name(func): # do something when 'func' is imported def wrapper(*args, **kwargs): # do something before func result = func(*args, **kwargs) # do something after func return result return wrapper 常见内置装饰器 python的虚函数、类函数 from abc import ABC, abstractmethod class A(ABC): @abstracmethod def something_instance_of_children_of_A_must_do(self): pass @staticmethod def something_class_A_can_do(): pass 装饰器小常识 装饰器打印类名 def print_func_name(func): def wrapper(*args, **kwargs): print(func.__name__) return wrapper 装饰器打印调用栈 def print_stack(func): import inspect # 关于inspect包的其他作用详见下方链接 def wrapper(*args, **kwargs): print(inspect.stack()) return wrapper

inpsect包官方文档

装饰器打印调用栈(高级版) class Wrapper: def __call__(self, func): import inspect func_file = inspect.getfile(func).split('\\')[-1].split('.')[0] func_name = f'{func_file}.{func.__class__}.{func.__name__}' def wrapper(*args, **kwargs): callers = [func_name] for frame_info in inspect.stack()[1:]: caller_file = frame_info.filename.split("\\")[-1].split('.')[0] callers.append(f'{caller_file}.{frame_info.function}') call_info = ' -> '.join(reversed(callers)) print(call_info)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3