مثال 47: استفاده از **kwargs

در این مثال با کمی از پیچیدگی های زیبای زبان پایتون آشنا می شویم و سپس دوباره مباحث کمی ساده تر می شوند. در این مثال یک تابع جدید می نویسیم که از تابع مثال قبل برای محاسبه ی آرگومان های ورودی از نوع kwargs** استفاده می کند. مراحل زیر را طی کنید تا این مثال را به پایان برسانید:

1- یک فایل به نام conversion.py ایجاد کنید!

2- تابع convert_usd_to_aud از مثال قبل در این اسکریپت قرار دهید:

def convert_usd_to_aud(amount, rate=0.75):
    return amount / rate

3- یک تابع جدید به نام convert_and_sum_list در اسکریپت قرار دهید که لیست ورودی ها به دلار آمریکا را دریافت می کند و پس از تبدیل آن ها به دلار استرالیا، نتایج را باهم جمع می کند:

def convert_and_sum_list(usd_list, rate=0.75):
    total = 0
    for amount in usd_list:
        total += convert_usd_to_aud(amount, rate=rate)
    return total
print(convert_and_sum_list([1, 3]))

4- اسکریپت را در ترمینال اجرا کنید.

در خروجی خوهید داشت:

5.33333333333333333


نکته:

دقت کردید که تابع convert_and_sum_list نیاز به آرگومان rate نداشت؟ در این مورد تنها نیاز داشتیم تا این آرگومان را به تابع convert_usd_to_aud برسانیم. حالا فرض کنید، به جای یک آرگومان، 1000 آرگومان داشته باشیم که بخواهیم آن ها را از طریق یک تابع به تابع دیگری وارد کنیم! میتوانیم تعداد بسیار زیادی خط کد اضافی به برنامه وارد کنیم و یا از دیکشنری kwargs استفاده کنیم.


5- تابع جدید زیر را به conversion.py اضافه کنید:

def convert_and_sum_list_kwargs(usd_list, **kwargs):
    total = 0
    for amount in usd_list:
        total += convert_usd_to_aud(amount, **kwargs)
    return total
print(convert_and_sum_list_kwargs([1, 3], rate=0.8))

اسکریپت را در ترمینال اجرا کنید.

در خروجی خواهید داشت:

5.0