آموزش پایتون - آرگومان‌های فقط-کلیدی

آرگومان‌های فقط-کلیدی

شما می‌توانید از متغیرها در لیست آرگومان‌های رسمی به‌صورت شناسه یا کلید برای ارسال مقدار استفاده کنید. استفاده از آرگومان‌های کلیدی اختیاری است. اما می‌توانید تابع را مجبور کنید که آرگومان‌ها را فقط به‌صورت کلیدی بپذیرد. برای این کار باید یک علامت ستاره (*) قبل از لیست آرگومان‌های فقط-کلیدی قرار دهید.

فرض کنید تابعی با سه آرگومان داریم که می‌خواهیم آرگومان‌های دوم و سوم آن فقط-کلیدی باشند. برای این منظور، بعد از آرگومان اول یک * قرار دهید.

مثالی از آرگومان‌های فقط-کلیدی

تابع توکار print() نمونه‌ای از آرگومان‌های فقط-کلیدی است. شما می‌توانید لیستی از عباراتی که قرار است چاپ شوند را درون پرانتز قرار دهید. مقادیر چاپ‌شده به‌صورت پیش‌فرض با یک فاصله (Space) از هم جدا می‌شوند. می‌توانید با استفاده از آرگومان "sep" هر کاراکتر جداکننده دیگری را به جای آن مشخص کنید.

print ("Hello", "World", sep="-")

این کد خروجی زیر را چاپ می‌کند -

Hello-World

مثال: استفاده از "sep" به عنوان آرگومان غیرکلیدی

آرگومان sep در تابع print() به‌صورت فقط-کلیدی است. تلاش کنید از آن به عنوان یک آرگومان غیرکلیدی (موقعیتی) استفاده کنید.

print ("Hello", "World", "-")

خروجی متفاوتی دریافت خواهید کرد که مطلوب شما نیست -

Hello World -

استفاده از آرگومان فقط-کلیدی در متد تعریف‌شده توسط کاربر

برای تبدیل یک آرگومان به آرگومان فقط-کلیدی، هنگام تعریف تابع توسط کاربر، ستاره (*) را قبل از آن قرار دهید.

توابعی در پایتون که توسط خود ما درون یک کلاس مشخص برای انجام کارهایی خاص تعریف می‌شوند، توابع تعریف‌شده توسط کاربر نامیده می‌شوند. این توابع به‌صورت پیش‌فرض در پایتون وجود ندارند.

مثال

در تابع تعریف‌شده توسط کاربر زیر با نام "intr()"، آرگومان "rate" به‌صورت فقط-کلیدی است. برای فراخوانی این تابع، مقدار rate باید حتماً همراه با نام کلید ارسال شود.

def intr(amt,*, rate):
   val = amt*rate/100
   return val
   
interest = intr(1000, rate=10)
print(interest)
100.0

با این حال، اگر تلاش کنید از روش معمول و موقعیتی برای فراخوانی تابع بالا استفاده کنید، با خطا مواجه خواهید شد.

مثال

کد زیر نشان می‌دهد زمانی که به آرگومان‌های فقط-کلیدی نیاز است، امکان استفاده از آرگومان‌های موقعیتی وجود ندارد.

def intr(amt, *, rate):
   val = amt * rate / 100
   return val
   
interest = intr(1000, 10)
print(interest)

در زمان اجرا، این کد نتیجه زیر را نشان خواهد داد -

interest = intr(1000, 10)
               ^^^^^^^^^^^^^^
TypeError: intr() takes 1 positional argument but 2 were given

پیشرفت مطالعه: وضعیت خوانده‌شدن این درس فقط در همین مرورگر ذخیره می‌شود؛ بدون نیاز به حساب کاربری.