def process_large_data(*, param1=None, param2=None, param3=None):
# 验证param1
if param1 is not None and not isinstance(param1, int):
raise ValueError("param1 must be an integer if provided")
# 验证param2
if param2 is not None and not isinstance(param2, str):
raise ValueError("param2 must be a string if provided")
# 验证param3
if param3 is not None and not isinstance(param3, list):
raise ValueError("param3 must be a list if provided")
# 处理逻辑
if param1 is not None and param2 is not None:
# 假设这里根据param1和param2做一些处理
result = f"param1: {param1}, param2: {param2}"
elif param3 is not None:
# 假设这里根据param3做一些处理
result = f"param3 contains {len(param3)} elements"
else:
result = "No parameters were provided"
return result
设计思路
- 函数签名:使用
*
表示后面的参数只能通过关键字参数传入,这有助于明确参数的使用方式,避免混淆。param1
、param2
、param3
均为可选参数,默认值为None
。
- 参数验证:对于每个可选参数,在函数开始处检查其是否为
None
,如果不为None
则验证其类型是否符合要求。如果类型不符合,抛出ValueError
,提示用户参数类型错误。
- 处理逻辑:根据传入的参数情况执行不同的处理逻辑。如果
param1
和param2
都有值,执行一种处理;如果只有param3
有值,执行另一种处理;如果都没有值,给出相应提示。这样可以灵活处理不同参数组合的情况。