*args
*args:用于接收任意数量的位置参数(非关键字参数),这些参数被收集到一个元组中。
def sum_numbers(*args):
total = 0
print(args) # (1, 2, 3, 4)
print(type(args)) # <class 'tuple'>
for num in args:
total += num
return total
print(sum_numbers(1, 2, 3, 4)) # 输出 10
**kwargs
**kwargs:用于接收任意数量的关键字参数,这些参数被收集到一个字典中。
def print_attributes(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_attributes(name='Alice', age=25, job='Engineer')
# 输出:
# name: Alice
# age: 25
# job: Engineer
混用
顺序不能变,必须(*args, **kwargs)
def greet(*args, **kwargs):
print(f"Hello {args[0]}!") # 假设第一个位置参数是名字
if 'greeting' in kwargs:
print(f"{kwargs['greeting']}!")
else:
print("Nice to meet you!")
greet('Alice', greeting='Good morning')
# 输出:
# Hello Alice!
# Good morning!