MST

星途 面试题库

面试题:Python中函数实参与形参的匹配规则

在Python函数定义中,有位置参数、默认参数、可变位置参数(*args)和可变关键字参数(**kwargs)。请描述这些参数在函数调用时实参与形参的匹配规则,并举例说明不同参数类型混合使用时如何正确传递实参。
22.1万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
  1. 位置参数
    • 匹配规则:实参按照顺序依次与形参匹配。
    • 示例
def add_numbers(a, b):
    return a + b
result = add_numbers(3, 5)
print(result) 
  1. 默认参数
    • 匹配规则:实参可以不传递默认参数的值,此时函数使用默认参数的值;若传递了值,则使用传递的实参值。实参按照位置或关键字方式匹配。
    • 示例
def greet(name, message='Hello'):
    return f'{message}, {name}!'
greeting1 = greet('Alice')
greeting2 = greet('Bob', 'Hi')
print(greeting1) 
print(greeting2) 
  1. 可变位置参数(*args)
    • 匹配规则:所有多余的位置实参被收集到一个元组中,这个元组被赋值给*args形参。
    • 示例
def sum_all(*args):
    total = 0
    for num in args:
        total += num
    return total
result1 = sum_all(1, 2, 3)
result2 = sum_all(10, 20, 30, 40)
print(result1) 
print(result2) 
  1. **可变关键字参数(kwargs)
    • 匹配规则:所有多余的关键字实参被收集到一个字典中,这个字典被赋值给**kwargs形参。
    • 示例
def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f'{key}: {value}')
print_info(name='Alice', age=30, city='New York')
  1. 不同参数类型混合使用时传递实参
    • 规则:位置参数在前,默认参数其次,然后是可变位置参数*args,最后是可变关键字参数**kwargs
    • 示例
def mixed_args(a, b=10, *args, **kwargs):
    print(f'a: {a}, b: {b}')
    print('args:', args)
    print('kwargs:', kwargs)
mixed_args(5, 20, 30, 40, name='Bob', age=25)

在上述mixed_args函数调用中,5匹配位置参数a20匹配默认参数b3040被收集到*args元组中,name='Bob'age=25被收集到**kwargs字典中。