آرگومان های کلمه کلیدی (Keyword Arguments)
یکی دیگر از راههای ارسال آرگومانها استفاده از نام آنهاست. استفاده از نام آرگومانها شما را از به یاد آوری و رعایت ترتیب پارامترها هنگام ارسال آرگومانها راحت میکند. در عوض شما باید نام پارامترهای تابع را به خاطر بسپارید. استفاده از نام آرگومانها خوانایی برنامه را بالا میبرد چون شما میتوانید ببینید که چه مقادیری به چه پارامترهایی اختصاص داده شده است. در زیر نحوه استفاده از آرگومان های کلمه کلیدی، وقتی که تابع فراخوانی میشود نشان داده شده است :
functionToCall( paramName1 = value, paramName2 = value, ... paramNameN = value);
حال به مثال زیر توجه کنید :
1: def Tellinformation(jack, andy, mark): 2: print("Jack's family is {0}.".format(jack)); 3: print("Andy's family is {0}.".format(andy)); 4: print("Mark's family is {0}.".format(mark)); 5: 6: Tellinformation(jack = "Scalia", andy = "Brown", mark = "OverMars"); 7: 8: #Print a newline 9: print(); 10: 11: Tellinformation(andy = "Brown", mark = "OverMars", jack = "Scalia"); 12: 13: print(); 14: 15: Tellinformation(mark = "OverMars", jack = "Scalia", andy = "Brown");
Jack's family is Scalia. Andy's family is Brown. Mark's family is OverMars. Jack's family is Scalia. Andy's family is Brown. Mark's family is OverMars. Jack's family is Scalia. Andy's family is Brown. Mark's family is OverMars.
خروجی نشان میدهد که حتی اگر ما ترتیب آرگومانها در سه بار فراخوانی تابع را تغییر دهیم مقادیر مناسب به پارامترهای مربوطهشان اختصاص داده میشود. همچنین میتوان از آرگومان های کلمه کلیدی و آرگومانهای ثابت (مقداری) به طور همزمان استفاده کرد به شرطی که آرگومانهای ثابت قبل از آرگومان های کلمه کلیدی قرار بگیرند:
#The following codes are currect Tellinformation("Scalia", andy = "Brown", mark = "OverMars"); Tellinformation("Scalia", mark = "OverMars", andy = "Brown"); #The following codes are wrong and will lead to errors Tellinformation(jack = "Scalia", andy = "Brown", "OverMars"); Tellinformation(jack = "Scalia", "OverMars", andy = "Brown");
همانطور که مشاهده میکنید ابتدا باید آرگومانهای ثابت هنگام فراخوانی تابع ذکر شوند. در اولین و دومین فراخوانی در کد بالا، مقدار “Scalia” را به عنوان اولین آرگومان به اولین پارامتر تابع یعنی jack اختصاص میدهیم. سومین و چهارمین خط کد بالا اشتباه هستند چون آرگومان های کلمه کلیدی، قبل از آرگومانهای ثابت قرار گرفتهاند. قرار گرفتن آرگومان های کلمه کلیدی بعد از آرگومانهای ثابت از بروز خطا جلوگیری میکند.