ورودی *args و **kwargs برای تابع در پایتون :
ورودی *args و **kwargs دو پارامتر خاص در تعریف تابع در زبان برنامه نویسی پایتون هستند. این دو ورودی به برنامه نویس این امکان را میدهند تا تعداد متغیرهای از آرگومانها را در تابع قرار دهد.
ورودی *args:
ورودی *args یک تاپل از آرگومانها را دریافت میکند. با استفاده از این ورودی، میتوان تعداد نامحدودی آرگومان را به تابع ارسال کرد. به عبارت دیگر، تعداد آرگومانهایی که به تابع ارسال میشود، ممکن است متغیر باشد. برای استفاده از این ورودی، نیاز است که آرگومانها را با استفاده از کاما از هم جدا کنید. به عنوان مثال:
def my_function(*args):
for arg in args:
print(arg)
my_function(‘Hello’, ‘World’, ‘!’)
نتیجه اجرای این تابع به صورت زیر خواهد بود:
Hello
World
!
ورودی **kwargs:
ورودی **kwargs یک دیکشنری از آرگومانها را دریافت میکند. با استفاده از این ورودی، میتوان تعداد نامحدودی آرگومان با مقدار به تابع ارسال کرد. به عبارت دیگر، تعداد آرگومانهایی که به تابع ارسال میشود، ممکن است متغیر باشد و هر آرگومان میتواند یک مقدار دلخواه داشته باشد. برای استفاده از این ورودی، نیاز است که آرگومانها را به صورت کلید و مقدار در داخل تابع ارسال کنید. به عنوان مثال:
def my_function(**kwargs):
for key, value in kwargs.items():
print(key, value)
my_function(first_name=’John’, last_name=’Doe’, age=30)
نتیجه اجرای این تابع به صورت زیر خواهد بود:
first_name John
last_name Doe
age 30
استفاده از *args و **kwargs:
استفاده از ورودی *args و **kwargs برای تعریف تابع در پایتون به برنامه نویس این امکان را میدهد تا تعداد نامحدودی آرگومان با مقدار را به تابع ارسال کند. این ورودیها به برنامه نویس این امکان را میدهند تا تابعهایی را با امکاناتی مانند طول متغیر ورودی نامحدود و یا امکان استفاده از آرگومانهای با مقدار اختیاری تعریف کند.
به عنوان مثال، فرض کنید که میخواهیم یک تابع را بنویسیم که مجموع آرگومانهای عددی را محاسبه کند. اگر میخواهیم تعداد آرگومانها را متغیر کنیم، میتوانیم از ورودی *args استفاده کنیم. به عنوان مثال:
def calculate_sum(*args):
result = 0
for number in args:
result += number
return result
print(calculate_sum(1, 2, 3, 4))
print(calculate_sum(1, 2, 3, 4, 5, 6, 7))
نتیجه اجرای این تابع به صورت زیر خواهد بود:
10
28
از طرفی، اگر میخواهیم آرگومانها را به صورت کلید و مقدار ارسال کنیم و همچنین بتوانیم آرگومانهای با مقدار اختیاری مشخصی را دریافت کنیم، میتوانیم از ورودی **kwargs استفاده کنیم. به عنوان مثال:
def print_info(**kwargs):
for key, value in kwargs.items():
print(key, value)
print_info(name=’John’, age=30, city=’New York’)
نتیجه اجرای این تابع به صورت زیر خواهد بود:
name John
age 30
city New York
به طور خلاصه، ورودی *args و **kwargs به برنامه نویس این امکان را میدهند تا تابعهایی را با تعداد نامحدودی آرگومان یا آرگومانهای با مقدار اختیاری تعریف کند. با استفاده از این ورودیها، برنامه نویس قادر خواهد بود تا تعداد متغیرهای از آرگومانها را در تابع استفاده کند و همچنین آرگومانهای با مقدار اختیاری را به تابع ارسال کند.