面试题答案
一键面试- 位置参数:
- 匹配规则:实参按照顺序依次与形参匹配。
- 示例:
def add_numbers(a, b):
return a + b
result = add_numbers(3, 5)
print(result)
- 默认参数:
- 匹配规则:实参可以不传递默认参数的值,此时函数使用默认参数的值;若传递了值,则使用传递的实参值。实参按照位置或关键字方式匹配。
- 示例:
def greet(name, message='Hello'):
return f'{message}, {name}!'
greeting1 = greet('Alice')
greeting2 = greet('Bob', 'Hi')
print(greeting1)
print(greeting2)
- 可变位置参数(*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)
- **可变关键字参数(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')
- 不同参数类型混合使用时传递实参:
- 规则:位置参数在前,默认参数其次,然后是可变位置参数
*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
匹配位置参数a
,20
匹配默认参数b
,30
和40
被收集到*args
元组中,name='Bob'
和age=25
被收集到**kwargs
字典中。