مدرسه زبان برنامه‌نویسی PYTHON

وبلاگی جهت معرفی - آموزش و تحلیل زبان برنامه نویسی ‍پایتون

مدرسه زبان برنامه‌نویسی PYTHON

وبلاگی جهت معرفی - آموزش و تحلیل زبان برنامه نویسی ‍پایتون

توجه داشته باشید که در این مثال، وقتی inner_function را برمی‌گردانیم، آن را فراخوانی نکردیم.

ما فقط مرجع را به آن برگرداندیم تا بتوانیم بعداً آن را ذخیره و فراخوانی کنیم:

returned_function = outer_function()
# outer_funciton is called

returned_function()
# inner_function is called

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

نحوه ایجاد دکوراتور در پایتون


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

به عنوان مثال، اگر می‌خواهیم یک دکوراتور ایجاد کنیم که 1 را به مقدار بازگشتی هر تابع اضافه کند، می‌توانیم این کار را به این صورت انجام دهیم:

def add_one_decorator(func):
    def add_one():
        value = func()
        return value + 1

    return add_one

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

def example_function():
    return 1

final_value = add_one_decorator(example_function)
print(final_value()) # 2

در این مثال، تابع add_one_decorator را فراخوانی می کنیم و مرجع را به example_function منتقل می کنیم.

وقتی تابع add_one_decorator را فرا می‌خوانیم، یک تابع جدید به نام add_one ایجاد می‌کند که درون آن تعریف شده و یک مرجع به این تابع جدید برمی‌گرداند. ما این تابع را در متغیر final_value ذخیره می کنیم.

بنابراین، هنگام اجرای تابع final_value، تابع add_one فراخوانی می شود.

تابع add_one تعریف شده در add_one_decorator سپس example_function را فراخوانی می کند، مقدار آن را ذخیره می کند و یکی به آن اضافه می کند.

در نهایت، این منجر به بازگشت 2 و چاپ به کنسول می شود.

فرآیند نحوه اجرای کد

توجه داشته باشید که چگونه برای تغییر مقدار بازگشتی آن و افزودن عملکرد به آن، مجبور نبودیم که example_function اصلی را تغییر دهیم. این چیزی است که دکوراتورها را بسیار مفید می کند!

فقط برای روشن شدن، دکوراتورها مختص پایتون نیستند. آنها مفهومی هستند که می توانند در سایر زبان های برنامه نویسی به کار روند. اما در پایتون، می توانید به راحتی با استفاده از نحو @ از آنها استفاده کنید.

نحوه استفاده از سینتکس @ در پایتون

کاراکتر @

همانطور که در بالا دیدیم، زمانی که می خواهیم از دکوراتورها استفاده کنیم، باید تابع دکوراتور را فراخوانی کنیم و تابعی را که می خواهیم تغییر دهیم، عبور دهیم.

در پایتون، می‌توانیم از نحو @ برای کارآمدتر بودن استفاده کنیم.

 

@add_one_decorator
def example_function():
    return 1

با نوشتن @add_one_decorator در بالای تابع ما، معادل زیر است:

example_function = add_one_decorator(example_function)

 

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی