آدرس : تهران میدان فردوسی خیابان ایرانشهر بین سمیه و طالقانی مجتمع تجاری میلاد واحد 9

پشتیبانی 24 ساعته : 02188867940 – 09927674217

برای مشاهده لیست علاقه مندی ها وارد شوید!

مشاهده محصولات فروشگاه
0

هیچ محصولی در سبد خرید نیست.

مبانی دکوراتور پایتون

دسته بندی :اخبار سایت 20 فوریه 2023 علیرضا بابامرادی 215

حال، دکوراتورها واقعاً چه هستند؟ آنها دیگری را “تزیین” یا “پیچیدن” می کنند
به شما اجازه می دهد قبل و بعد از اجرای تابع پیچیده کد را اجرا کنید.
دکوراتورها به شما امکان می دهند بلوک های ساختمانی قابل استفاده مجدد را تعریف کنید که می توانند
تغییر یا گسترش رفتار سایر عملکردها. و به شما اجازه دادند
این کار را بدون تغییر دائمی خود تابع پیچیده انجام دهید.
رفتار تابع فقط زمانی تغییر می کند که تزئین شده باشد.
اجرای یک دکوراتور ساده چگونه می تواند باشد؟ که در
اصطلاحات اساسی، دکوراتور، فراخوانی است که یک فراخوان را به عنوان ورودی و
قابل فراخوان دیگری را برمی گرداند.
تابع زیر دارای این ویژگی است و می تواند در نظر گرفته شود
ساده ترین دکوراتوری که می توانید بنویسید:
def null_decorator(func):
return func

همانطور که می بینید، null_decorator یک قابلیت فراخوانی است (این یک تابع است)، که طول می کشد
قابل فراخوان دیگری به عنوان ورودی آن، و همان ورودی قابل فراخوانی را برمی گرداند
بدون تغییر آن
بیایید از آن برای تزئین (یا بسته بندی) عملکرد دیگری استفاده کنیم:
def greet():
return ‘Hello!’
greet = null_decorator(greet)

greet()
‘Hello!’
در این مثال، من یک تابع سلام و سپس بلافاصله تعریف کرده ام
آن را با اجرای آن از طریق تابع null_decorator تزئین کرد. من می دانم که این هنوز خیلی مفید به نظر نمی رسد. منظورم این است که ما به طور خاص دکوراتور بی فایده را امضا کردیم، درست است؟ اما در یک لحظه این مثال نحوه عملکرد نحو دکوراتور مورد خاص پایتون را روشن خواهد کرد.
به جای اینکه صریحاً null_decorator را در greet فراخوانی کنید و سپس متغیر greet را مجدداً امضا کنید، می‌توانید از دستور @ Python برای تزئین راحت‌تر یک تابع استفاده کنید.

@null_decorator
def greet():
return ‘Hello!’

greet()
‘Hello!’
قرار دادن یک خط @null_decorator در جلوی تعریف تابع است
مانند تعریف تابع ابتدا و سپس اجرا از طریق
دکوراتور استفاده از نحو @ فقط قند نحوی و میانبر است
برای این الگوی رایج
توجه داشته باشید که با استفاده از نحو @ تابع را بلافاصله در تزئین می کند
زمان تعریف این امر دسترسی به اصل بدون تزئین بدون هک های شکننده را دشوار می کند. بنابراین می توانید تزئین را انتخاب کنید
برخی از توابع به صورت دستی به منظور حفظ توانایی فراخوانی تابع تزئین نشده نیز انجام می شود.

دکوراتورها می توانند رفتار را اصلاح کنند
اکنون که کمی با نحو دکوراتور آشنا شدید، بیایید
دکوراتور دیگری بنویسید که در واقع کاری انجام می دهد و آن را اصلاح می کند
رفتار تابع تزئین شده
در اینجا یک دکوراتور کمی پیچیده تر است که نتیجه را تبدیل می کند
تابع تزئین شده به حروف بزرگ:
def uppercase(func):
def wrapper():
original_result = func()
modified_result = original_result.upper()
return modified_result
return wrapper

علیرضا بابامرادی

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

مطالب زیر را حتما بخوانید:

قوانین ارسال دیدگاه در سایت

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

لینک کوتاه:
0