面试题答案
一键面试设计思路
- 读取配置文件:使用Python的
configparser
库读取配置文件,解析出不同函数对应的装饰器配置。 - 定义装饰器:编写权限验证、结果缓存等基础装饰器。
- 装饰器框架:创建一个装饰器工厂,根据配置文件内容动态应用装饰器到目标函数。
关键代码片段
import configparser
import functools
# 权限验证装饰器
def auth_required(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
# 简单模拟权限验证
print("进行权限验证...")
return func(*args, **kwargs)
return wrapper
# 结果缓存装饰器
def result_cache(func):
cache = {}
@functools.wraps(func)
def wrapper(*args, **kwargs):
key = (args, tuple(sorted(kwargs.items())))
if key not in cache:
cache[key] = func(*args, **kwargs)
return cache[key]
return wrapper
def decorate_functions_from_config():
config = configparser.ConfigParser()
config.read('config.ini')
def decorator_factory(func):
func_name = func.__name__
if func_name in config:
for option in config[func_name]:
if option == 'auth':
func = auth_required(func)
elif option == 'cache':
func = result_cache(func)
return func
return decorator_factory
# 使用示例
@decorate_functions_from_config()
def example_function(a, b):
print(f"计算 {a} + {b}")
return a + b
配置文件config.ini
示例:
[example_function]
auth = true
cache = true