*args รับ positional arguments จำนวนไม่คงที่ (tuple) **kwargs รับ keyword arguments จำนวนไม่คงที่ (dictionary)
ตัวอย่าง *args
def multiply(*args):
y = 1
for i in args:
y = y * i
print(y)
multiply(3, 4) # 12
multiply(10, 8) # 80
multiply(2, 5, 6) # 60
multiply(4, 5, 10, 9) # 1800
ตัวอย่าง **kwargs
def print_kwargs(**kwargs):
print(kwargs)
print_kwargs(a='foo', b=10, c=True)
ผลลัพธ์
{'a': 'foo', 'b': 10, 'c': True}
ชื่อ args และ kwargs เป็นเพียง convention สำคัญคือ * และ **