MST
星途 面试题库

面试题:Python 利用 **kwargs 实现函数功能动态扩展

假设你有一个基础函数 `base_function` ,它接受两个数字参数并返回它们的和。现在请通过一个装饰器,利用 **kwargs 实现对 `base_function` 的功能扩展,使其可以接受一个额外的 `operation` 参数,当 `operation` 为 'product' 时,函数返回两个数字的乘积;当 `operation` 为 'difference' 时,返回两个数字的差。
12.5万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
def operation_decorator(func):
    def wrapper(*args, **kwargs):
        operation = kwargs.get('operation')
        a, b = args
        if operation == 'product':
            return a * b
        elif operation == 'difference':
            return a - b
        else:
            return func(*args)
    return wrapper


def base_function(a, b):
    return a + b


new_function = operation_decorator(base_function)

你可以使用如下方式调用:

# 调用原始功能(求和)
result_sum = new_function(3, 5)  
print(result_sum)  
# 调用扩展功能(求积)
result_product = new_function(3, 5, operation='product')  
print(result_product)  
# 调用扩展功能(求差)
result_difference = new_function(3, 5, operation='difference')  
print(result_difference)