实际用例
日志记录与配置函数
def configure_logger(**kwargs):
config = {
'level': 'INFO',
'format': '%(asctime)s - %(message)s',
'filename': None
}
config.update(kwargs)
print(f"日志记录器配置: {config}")
## 灵活的日志记录器配置
configure_logger(level='DEBUG')
configure_logger(filename='app.log', format='%(levelname)s: %(message)s')
API 包装器设计
def make_api_request(endpoint, *args, **kwargs):
headers = kwargs.get('headers', {})
method = kwargs.get('method', 'GET')
params = kwargs.get('params', {})
print(f"端点: {endpoint}")
print(f"方法: {method}")
print(f"头部信息: {headers}")
print(f"参数: {params}")
## 灵活的 API 请求处理
make_api_request('/users',
method='POST',
headers={'Auth': 'token123'},
params={'active': True})
装饰器实现
def flexible_decorator(*decorator_args, **decorator_kwargs):
def decorator(func):
def wrapper(*args, **kwargs):
print("装饰器参数:", decorator_args, decorator_kwargs)
return func(*args, **kwargs)
return wrapper
return decorator
@flexible_decorator(log=True, level='debug')
def example_function(x, y):
return x + y
example_function(3, 4)
工作流处理
graph TD
A[输入数据] --> B{使用灵活参数进行处理}
B --> C[转换数据]
B --> D[验证数据]
B --> E[记录信息]
参数技术比较
技术 |
灵活性 |
使用场景 |
复杂度 |
*args |
高 |
多个输入 |
低 |
**kwargs |
非常高 |
配置 |
中等 |
混合 |
最高 |
复杂工作流 |
高 |
数据库查询构建器
def create_query(table, **conditions):
base_query = f"SELECT * FROM {table}"
where_clauses = [f"{k} = '{v}'" for k, v in conditions.items()]
if where_clauses:
query = f"{base_query} WHERE {' AND '.join(where_clauses)}"
else:
query = base_query
return query
## 动态查询生成
print(create_query('users', active=True, role='admin'))
print(create_query('products', category='electronics', price_above=100))
事件处理系统
class EventManager:
def __init__(self):
self.listeners = {}
def register_listener(self, event_type, *callbacks):
if event_type not in self.listeners:
self.listeners[event_type] = []
self.listeners[event_type].extend(callbacks)
def trigger_event(self, event_type, **event_data):
if event_type in self.listeners:
for callback in self.listeners[event_type]:
callback(**event_data)
## 灵活的事件处理
manager = EventManager()
manager.register_listener('user_login',
lambda **data: print(f"登录: {data}"),
lambda **data: print(f"日志记录: {data}"))
最佳实践
- 使用可变参数以实现最大灵活性
- 清晰记录函数签名
- 验证和清理输入
- 考虑性能影响
LabEx 建议练习这些技巧,以构建更具适应性的 Python 应用程序。