وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

آرگومان های پیش فرض در توابع پایتون

0 67
زمان لازم برای مطالعه: 5 دقیقه


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

در این مقاله روش استفاده از آرگومان های پیش فرض در توابع پایتون را خواهید دید. اما ابتدا روش تعریف یک تابع در پایتون و روش انتقال صریح مقادیر به آرگومان های تابع را خواهیم دید.

عملکرد بدون آرگومان

بیایید یک تابع بسیار ساده پایتون را بدون هیچ آرگومان تعریف کنیم:

def my_function():
    print("This is a function without arguments")

اسکریپت بالا یک تابع را تعریف می کند، my_function، که هیچ آرگومانی را نمی پذیرد و به سادگی یک رشته را چاپ می کند.

اسکریپت زیر نشان می دهد که در واقع چگونه می خواهید آن را فراخوانی کنید my_function() تابع:

my_function()

در خروجی، باید یک عبارت ساده را مشاهده کنید که بر روی صفحه نمایش چاپ شده است my_function() تابع:

This is a function without arguments

عملکرد با آرگومان های صریح

اکنون یک تابع ساده پایتون تعریف می کنیم که در آن باید چندین مقدار را برای آرگومان های تابع ارسال کنیم. اگر مقادیری را برای همه آرگومان های تابع مشخص نکنید، یک خطا مشاهده خواهید کرد.

در اینجا تابعی است که به عنوان مثال از آن استفاده خواهیم کرد:

def func_args(integer1, integer2):
    result = integer1 + integer2
    return result

در کد بالا یک تابع ایجاد می کنیم، func_args()، با دو استدلال integer1 و integer2. تابع مقادیر ارسال شده در دو آرگومان را اضافه می کند و نتیجه را به فراخوان دهنده تابع برمی گرداند.

بیایید سعی کنیم تابع بالا را با دو آرگومان فراخوانی کنیم:

result = func_args(10, 20)
print(result)

اسکریپت بالا را فراخوانی می کند func_args() روش با دو مقدار پارامتر یعنی 10 و 20 در خروجی باید مجموع این دو مقدار یعنی 30 را مشاهده کنید.

بیایید اکنون سعی کنیم با آن تماس بگیریم func_args() متد بدون ارسال مقادیر برای آرگومان ها:

result = func_args()
print(result)

در خروجی باید خطای زیر را مشاهده کنید:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-13-3449c8e5e188> in <module>
----> 1 result = func_args()
      2 print(result)

TypeError: func_args() missing 2 required positional arguments: 'integer1' and 'integer2'

خطا کاملا واضح است، فراخوانی تابع به func_args() 2 آرگومان موقعیتی مورد نیاز را از دست داده است، integer1 و integer2. خطا اساساً به ما می گوید که باید مقادیری را برای the ارسال کنیم integer1 و integer2 آرگومان ها از طریق فراخوانی تابع.

پیشنهاد می‌کنیم بخوانید:  مرتب سازی شمارش در پایتون

بیایید اکنون یک مقدار برای یکی از آرگومان ها ارسال کنیم و ببینیم چه اتفاقی می افتد:

result = func_args(10)
print(result)

اکنون در خروجی، دوباره باید خطای زیر را مشاهده کنید:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-14-640ec7b786e1> in <module>
----> 1 result = func_args(10)
      2 print(result)

TypeError: func_args() missing 1 required positional argument: 'integer2'

تفاوت در اینجا این است که خطا اکنون به ما می گوید که مقدار for یکی از استدلال های موضعی، به عنوان مثال integer2، گم شده است. این بدان معناست که بدون تنظیم مقادیر آرگومان پیش‌فرض، باید مقادیر را به صراحت برای آن ارسال کنید همه آرگومان های تابع، در غیر این صورت یک خطا پرتاب می شود.

اگر بخواهید تابع شما با یا بدون مقادیر آرگومان در فراخوانی تابع اجرا شود چه؟ اینجا جایی است که آرگومان های پیش فرض در توابع پایتون وارد بازی می شوند.

تابع با آرگومان های پیش فرض

آرگومان‌های پیش‌فرض در توابع پایتون آرگومان‌هایی هستند که مقادیر پیش‌فرض را می‌گیرند، اگر هیچ مقدار صریحی از فراخوانی تابع به این آرگومان‌ها ارسال نشود. بیایید یک تابع را با یک آرگومان پیش فرض تعریف کنیم.

def find_square(integer1=2):
    result = integer1 * integer1
    return result

اسکریپت بالا یک تابع را تعریف می کند find_square() با یک آرگومان پیش فرض یعنی integer1. مقدار پیش فرض برای integer1 آرگومان روی 2 تنظیم شده است find_square() روش با مقدار برای integer1 استدلال، find_square() تابع مربع آن مقدار را برمی گرداند.

در غیر این صورت، اگر هیچ مقداری برای integer1 استدلال از find_square() تابع، خواهید دید که مقدار پیش فرض یعنی 2 به آن اختصاص داده می شود integer1و تابع مربع 2 یعنی 4 را برمی گرداند.

بیایید ابتدا با آن تماس بگیریم find_square() روش با مقدار آرگومان 10:

result = find_square(10)
print(result)

خروجی:

100

هنگامی که اسکریپت بالا را اجرا می کنید، مقدار 10 مقدار پیش فرض 2 را برای آرگومان بازنویسی می کند. integer1 از find_square() تابع و تابع 100 را برمی گرداند که مربع 10 است.

در حال حاضر ما تماس بگیرید find_square() تابع بدون هیچ مقداری برای argument1 بحث و جدل. در این صورت خواهید دید که 4 توسط برگردانده می شود find_square() تابع از آنجایی که در غیاب مقدار برای find_square() تابع، مقدار پیش فرض 2 به عنوان مقدار برای استفاده می شود find_square() عملکرد، همانطور که در زیر نشان داده شده است:

result = find_square()
print(result)

خروجی:

4

یک تابع پایتون می تواند چندین آرگومان پیش فرض نیز داشته باشد. به عنوان مثال، در اسکریپت زیر، تابع اعداد صحیح ارسال شده به آرگومان ها را اضافه می کند. اگر هیچ یک از مقادیر صحیح به تابع ارسال نشود، آرگومان های پیش فرض به ترتیب مقادیر 2 و 4 را می گیرند، همانطور که در زیر نشان داده شده است:

def add_ints(integer1=2, integer2=4):
    result = integer1 + integer2
    return result

بیایید ابتدا با آن تماس بگیریم add_ints() عملکرد بدون هیچ پارامتر:

result = add_ints()
print(result)

خروجی:

6

از آنجایی که هیچ مقداری برای آرگومان های تابع ارسال نکردیم، مقادیر آرگومان پیش فرض یعنی 2 و 4 با هم جمع شده اند.

پیشنهاد می‌کنیم بخوانید:  معرفی ScrapePark.org – خراش دادن وب را بدون آسیب رساندن به کسی تمرین کنید

بیایید اکنون دو تا از ارزش های خود را به آن منتقل کنیم add_ints() تابع:

result = add_ints(4, 8)
print(result)

خروجی:

12

همانطور که انتظار می رفت، 4 و 8 با هم جمع شدند تا 12 برگردد.

یک تابع پایتون می‌تواند همزمان آرگومان‌های عادی (صریح) و پیش‌فرض داشته باشد. بیایید یک تابع ایجاد کنیم take_power(). آرگومان اول تابع یک آرگومان عادی است در حالی که آرگومان دوم یک آرگومان پیش فرض با مقدار 2 است. تابع نتیجه مقدار آرگومان اول را به توان مقدار در آرگومان دوم برمی گرداند.

def take_power(integer1, integer2=2):
    result = 1
    for i in range(integer2):
        result = result * integer1

    return result

بیایید ابتدا فقط یک آرگومان واحد را پاس کنیم:

result = take_power(3)
print(result)

خروجی:

9

در اسکریپت بالا، 3 به عنوان یک مقدار به the ارسال شده است integer1 استدلال از take_power() تابع. هیچ مقداری برای آرگومان پیش فرض ارائه نشده است integer2. از این رو، مقدار پیش فرض 2 برای گرفتن توان 3 استفاده می شود و در خروجی عدد 9 را مشاهده خواهید کرد.

حالا بیایید دو مقدار را به the ارسال کنیم take_power() تابع.

result = take_power(3, 4)
print(result)

در خروجی 3 را به توان چهارم یعنی 81 می بینید.

توجه به این نکته مهم است که پارامترهایی با آرگومان های پیش فرض پارامترهای بدون آرگومان پیش فرض نمی توانند دنبال شوند. برای مثال تابع زیر را در نظر بگیرید:

def take_power(integer1=2, integer2):
    result = 1
    for i in range(integer2):
        result = result * integer1

    return result

تلاش برای فراخوانی این تابع منجر به خطا می شود زیرا آرگومان اول پیش فرض دارد، اما آرگومان دوم اینطور نیست:

result = take_power(3, 4)
print(result)

اجرای این کد باعث خطای زیر می شود:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-14-640ec7b786e1> in <module>
----> 1 def take_power(integer1=3, integer2):
      2     result = 1

SyntaxError: non-default argument follows default argument

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-17 23:06:05

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید