MST

星途 面试题库

面试题:Python复杂场景下可选实参的设计与应用

假设你正在开发一个用于处理大量数据的Python模块,其中有一个核心函数需要接收多个可选实参,这些实参相互之间可能存在依赖关系。请设计这个函数,包括函数签名、对可选实参的验证以及处理逻辑,并说明设计思路。
33.1万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
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

设计思路

  1. 函数签名:使用*表示后面的参数只能通过关键字参数传入,这有助于明确参数的使用方式,避免混淆。param1param2param3均为可选参数,默认值为None
  2. 参数验证:对于每个可选参数,在函数开始处检查其是否为None,如果不为None则验证其类型是否符合要求。如果类型不符合,抛出ValueError,提示用户参数类型错误。
  3. 处理逻辑:根据传入的参数情况执行不同的处理逻辑。如果param1param2都有值,执行一种处理;如果只有param3有值,执行另一种处理;如果都没有值,给出相应提示。这样可以灵活处理不同参数组合的情况。