ویدیو آشنایی با args و kwargs در پایتون
به شکل پیشفرض یک تابع پایتون باید با تعداد دقیق آرگومان صدا زده شود. اما گاهی اوقات ما تعداد دقیق آرگومان های یک تابع را نمی دانیم. در این حالت میتوانیم از کلمات کلیدی *args و **kwargs پایتون استفاده کنیم. در پایتون از args و kwargs برای هندل کردن آرگومان های پیش بینی نشده استفاده میشود. این آرگومانها میتوانند به شکل ساده یا دیکشنری ارسال شوند.
# کلمه کلیدی args* پایتون
اگر نمی دانید چند آرگومان به تابع شما ارسال خواهد شد، میتوانید از علامت ستاره پشت نام آرگومان استفاده کنید. مثال:
def name_of_kids(kids):
print("Hello ", kids)
در تابع بالا انتظار داریم که نام فرزندان ارسال شود اما تعداد دقیق فرزندان را نمیدانیم. در این حالت میتوانیم از علامت * استفاده کنیم. کد بالا به شکل زیر تغییر می کند:
def name_of_kids(*kids):
print("Hello ", kids)
در این حالت هر تعداد آرگومان میتواند به تابع شما ارسال شود.
همچنین میتوانید این روش را در کنار آرگومان های معمولی نیز استفاده کنید. آرگومان های معمولی پایتون باید قبل از قرار *args گیرند. مثال:
def your_info(name, age):
print("your name is ", name)
print("your age is ", age)
your_info('amir', 12)
در تابع بالا، اطلاعات کاربر مثل نام و سن را درخواست میکنیم. اما ممکن است کاربر بخواهد اطلاعات بیشتری مثل قد یا آدرس را ارسال کند. در این حالت میتوانیم از کلمه کلیدی *args پایتون استفاده کنیم.
def your_info(name, age, *args):
print("your name is ", name)
print("your age is ", age)
print("your other informations ", args)
your_info('amir', 12, 180, 'tehran')
در این حالت کاربر میتواند هر تعداد آرگومان دلخواه را ارسال کند. دقت کنید که خروجی *args پایتون یک tuple است.
# کلمه کلیدی kwargs** پایتون
حالا اگر فانکشنی داشته باشید که آرگومان ها را به شکل کلید واژه قبول کند، باید از **kwargs پایتون استفاده کنید. مثال:
your_info('amir', 12, height=20, address='tehran')
در کد بالا، کاربر اطلاعاتش را به شکل کلیدواژه ارسال میکند و تابع باید به شکل زیر بازنویسی شود:
def your_info(name, age, **kwargs):
print("your name is ", name)
print("your age is ", age)
print("your other informations ", kwargs)
دقت کنید که خروجی **kwargs پایتون یک دیکشنری است.
# ترکیب args* و kwargs** پایتون
شما میتوانید از *args و **kwargs در کنار یکدیگر استفاده کنید اما دقت کنید که ترتیب مهم است.
ترتیب به شکل زیر است:
- آرگومان های معمولی پایتون
- کلمه کلیدی
*args - کلمه کلیدی
**kwargs
به مثال زیر دقت کنید:
def my_function(title, *args, **kwargs):
print("Title:", title)
print("Positional arguments:", args)
print("Keyword arguments:", kwargs)
my_function("User Info", "amir", "bigdelu", age = 12, city = "tehran")
اگر ویدیو بالا را دوست داشتید پیشنهاد میکنیم به مطالب زیر هم سر بزنید:
ارسال نظر