استفاده از *args
و **kwargs
در پایتون، برای تعریف توابعی که تعداد متغیر و نامشخصی از آرگومانها را دریافت میکنند، میتوان از *args
و **kwargs
استفاده کرد.
استفاده از *args
زمانی که نمیدانید چه تعداد آرگومان موقع فراخوانی تابع ارسال خواهد شد، میتوانید از *args
استفاده کنید. این آرگومانها به صورت یک تاپل به تابع منتقل میشوند:
def print_args(*args):
for arg in args:
print(arg)
print_args("Hello", 123, True)
خروجی:
Hello
123
True
استفاده از **kwargs
برای دریافت آرگومانهای نامدار (کلید و مقدار) به صورت متغیر، از **kwargs
استفاده میکنیم که این دادهها به صورت یک دیکشنری در تابع در دسترس قرار میگیرند:
def print_kwargs(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_kwargs(name="John", age=30, city="New York")
خروجی:
name: John
age: 30
city: New York
ترکیب *args
و **kwargs
میتوان هر دو ساختار را در یک تابع به صورت همزمان استفاده کرد، به شرط رعایت ترتیب زیر:
def example_func(x, *args, **kwargs):
print("x:", x)
print("args:", args)
print("kwargs:", kwargs)
example_func(10, "a", "b", key1=100, key2=200)
خروجی:
x: 10
args: ('a', 'b')
kwargs: {'key1': 100, 'key2': 200}