MST

星途 面试题库

面试题:Python函数参数的动态解包应用

假设有两个列表 `list1 = [1, 2]` 和 `list2 = [3, 4]`,以及一个函数 `func(a, b, c, d)`,如何通过参数解包的方式调用 `func` 函数,使得 `a = 1`, `b = 2`, `c = 3`, `d = 4`?同时,解释在函数定义和调用中,`*args` 和 `**kwargs` 的使用场景以及区别。
16.6万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
  1. 通过参数解包调用 func 函数
    list1 = [1, 2]
    list2 = [3, 4]
    def func(a, b, c, d):
        pass
    func(*list1, *list2)
    
  2. *args**kwargs 的使用场景及区别
    • *args
      • 使用场景:当函数需要处理不确定数量的位置参数时使用。例如,一个计算多个数字总和的函数,我们事先不知道会传入多少个数字。
      • 示例
        def sum_numbers(*args):
            total = 0
            for num in args:
                total += num
            return total
        result = sum_numbers(1, 2, 3)
        print(result)  # 输出 6
        
    • **kwargs
      • 使用场景:当函数需要处理不确定数量的关键字参数时使用。比如,一个函数需要根据不同的配置信息进行不同的操作,配置信息以键值对形式传入。
      • 示例
        def describe_person(**kwargs):
            for key, value in kwargs.items():
                print(f"{key}: {value}")
        describe_person(name='Alice', age = 30, city='New York')
        
    • 区别
      • *args 用于收集位置参数,它将传入的多个位置参数收集到一个元组中。
      • **kwargs 用于收集关键字参数,它将传入的多个关键字参数收集到一个字典中,键为参数名,值为参数值。