آشنایی با دکوراتورها در زبان برنامه نویسی پایتون

یکی دیگر از ویژگی های بسیار مهم زبان برنامه نویسی پایتون آن است که امکان تلفیق یک تابع با توابع دیگر را برای شما فراهم می کند.
شما با استفاده از دکوراتور ها امکان اضافه نمودن فانکشنالیتی بیشتر به یک کلاس تابع را خواهید داشت.
به این صورت که ما علاوه بر کارکرد های تابع، برخی کارکرد های خارجی را نیز می توانیم به تابع اضافه کنیم.
این روش در بسیاری از شرایط می تواند کاربردی باشد.
به عنوان مثال زمانی که تمایل دارید کد هایتان قابل استفاده مجدد باشند می توانید از دکوراتور ها استفاده نمایید.
در صورتی که بدانید دکوراتور ها در زبان برنامه نویسی پایتون به چه شیوه ای استفاده می شوند، می توانید قابلیت خوانایی کد هایتان را چند برابر کنید.
دکوراتور ها این ویژگی را دارند که بدون دسترسی مستقیم به بلاک فانکشن، رفتار تابع را تغییر داده و کد های جدیدی را به آن بیافزایند.
توجه داشته باشید که در حین یادگیری زبان برنامه نویسی پایتون لازم است به خوبی استفاده از دکوراتور ها را یاد بگیرید.
برنامه نویسانی که در فلسک و یا فریمورک click با دکوراتور ها آشنایی دارند، تنها می توانند از آن استفاده نمایند و قادر به نوشتن یک دکوراتور به تنهایی نخواهند بود.
آموزش نحوه کار دکوراتور ها در زبان برنامه نویسی پایتون
در مثال زیر یک دکوراتور را مشاهده می کنید.
@my_decorator def hello(): print(‘hello’) |
توجه داشته باشید که زمانی که یک تابع را فراخوانی می نمایید آن تابع را در واقع به یک شیء از کلاس اصلی برنامه اضافه می نمایید.
در مثال فوق تابع Hello یک شیء تابعی می باشد.
@my_decorator خود یک تابع می باشد که امکان استفاده از شیء تابعی را دارد.
پس از دسترسی به این شیء، دکوراتور ها برای مفسر، شیء متفاوتی را ارسال می کنند .
همچنین تابعی که دکوراتور برگشت می دهد نیز به عنوان تابع hello شناخته شده است.
شما با کمک مثال زیر می توانید آن را به راحتی به ذهن خود بسپارید.
hello = decorate(hello) |
در واقع hello شیء می باشد که از دکورات نمودن تابع hello به دست آمده است
با استفاده از دکوراتور ها امکان استفاده از یک تابع به عنوان ورودی را دارید اما لزومی برای خروجی فرستادن به صورت یک تابع وجود ندارد.
آموزش چگونگی ایجاد یک دکوراتور در زبان برنامه نویسی پایتون
همانطور که گفته شد دکوراتور ها تابعی می باشند که تابعی را به عنوان ورودی دریافت نموده و به یک شیء باز می گردانند.
پس برای ایجاد یک دکوراتور اولین قدم ایجاد یک تابع جدید می باشد:
def my_decorator(f): return 5 |
همچنین توجه داشته باشید که شما می توانید از هر تابعی به عنوان دکوراتور استفاده نمایید.
در مثال زیر دکوراتور یک تابع را به عنوان ورودی در خود قرار داده و شیء متفاوتی را به خروجی ارسال نموده است.
در واقع دکوراتور ها عموما یک تابع را به ورودی ارسال نموده و عدد ۵ را باز می گردانند.
در صورت اعمال دکوراتور به صورت زیر دچار خطا خواهید شد:
@my_decorator
def hello(): print(‘hello’) |
پیغام خطا به شرح زیر می باشد
>>> hello()
Traceback (most recent call last): File “<stdin>”, line 1, in <module> TypeError: ‘int’ object is not callable ’int‘ object is not callable |
پیغام خطا به این دلیل است که دکوراتور ها همیشه یک عدد int را باز می گردانند و این مورد نیز قابل فراخوانی یا callable نخواهد بود و قادر نخواهیم بود تا آن را به صورت یک تابع فراخوانی نماییم.
به همین دلیل جهت جلوگیری از بروز پیغام خطا لازم است چیزی را به خروجی ارسال کنید که خود به تنهایی یک تابع باشد.
به این شکل که شیء که در خود دکوراتور باز می گردد لازم است تابع باشد.
تصور کنید که تمایل به ساخت برنامه ای دارید که در هر بار فراخوانی تابعی آن را چاپ نماید.
به راحتی می توانیم به صورت زیر تابعی ایجاد کنیم.
در مثال زیر تمایل داریم که تابع با استفاده از دکوراتور به خروجی فرستاده شود.
در این شرایط نیز لازم است از تابع تو در تو استفاده نماییم:
def mydecorator(f): # f is the function passed to us from python def log_f_as_called(): print(f’{f} was called.’) f() return log_f_as_called |
ما در مثال فوق توابع را به صورت تو در تو تعریف نمودیم و تابع mydecorator خروجی تابع داخلی را ارسال می نماید.
همچنین با پیاده سازی حالت زیر می توانیم تابع hello در مثال قبل را مجدد فراخوانی نماییم:
@mydecorator
def hello(): print(‘hello’) |
با اجرای کد فوق نیز به خروجی زیر می رسیم:
<function hello at 0x7f27738d7510> was called. hello |
آموزش ترکیب نمودن درست توابع در زبان برنامه نویسی پایتون
ما در زبان برنامه نویسی پایتون می توانیم یک تابع را به تعداد نامحدودی دکوراتور تبدیل کنیم.
به این شکل دکوراتور ها زنجیره تأثیر و تغییر را دریافت می نمایند.
به این صورت تأثیر دکوراتور ها بر روی توابع بعد خود به شکل زنجیره اعمال شده و این روند تا پایان ادامه می یابد.
به مثال زیر توجه نمایید:
@a @b @c def hello(): print(‘hello’) |
در واقع این مورد فرمول hello=a(b(c(hello))) را اجرا می نماید به به شکل زیر نیز قابل اجرا می باشد:
@mydecorator
@mydecorator
def hello():
print(‘hello’)
>>> hello()
<function mydec.<locals>.a at 0x7f277383d378> was called.
<function hello at 0x7f2772f78ae8> was called.
hello |
بر اساس خروجی مثال فوق متوجه می شویم که دکوراتور اول بر روی دوم تأثیر گذاشته و خط مجزایی را نیز به صورت مستقل چاپ می نماید.
کلام آخر
در این مقاله با ویژگی دیگر زبان برنامه نویسی پایتون آشنا شدیم که در کد نویسی بسیار کاربردی می باشد.
شما می توانید با کمک پکیج های آموزشی زبان برنامه نویسی پایتون در سایت مگاپایتون با ویژگی های بیشتر این زبان آشنا شوید و سریعا به کسب درآمد فراوان در این حیطه دست یابید.
دانستنی های کاربردی جهت آشنایی با زبان برنامه نویسی پایتون
زبان برنامه نویسی پایتون چه کاربرد و ویژگی هایی دارد؟
چگونه به یک برنامه نویس ماهر تبدیل شویم؟
با یادگیری چه زبانی می توانید به یک برنامه نویس ماهر تحت وب تبدیل شوید؟
آشنایی با معنای اوپن سورس و مزایای آن در برنامه نویسی
زبان برنامه نویسی پایتون در دنیای امروز چه کاربردی دارد؟
یادگیری برنامه نویسی پایتون برای مبتدیان
آموزش چگونگی شروع یادگیری زبان برنامه نویسی پایتون
شروع یادگیری زبان برنامه نویسی پایتون : آشنایی با توابع پایتون
شروع یادگیری زبان برنامه نویسی پایتون : عملگر های شرطی
شروع یادگیری زبان برنامه نویسی پایتون (بخش آخر)
آشنایی با سایت های آموزشی رایگان و معتبر جهت یادگیری زبان برنامه نویسی پایتون
چرا زبان برنامه نویسی پایتون به یک زبان قدرتمند تبدیل شده است؟
آشنایی با قدرت و ویژگی های فریم ورک ها در زبان برنامه نویسی پایتون
آشنایی با دیکشنری در زبان برنامه نویسی پایتون
آشنایی با پردرآمدترین زبان های برنامه نویسی سال های اخیر در ایران
چه زمانی استفاده از زبان برنامه نویسی پایتون می تواند برای شما سود آور باشد؟
چگونه وارد دنیای برنامه نویسی پایتون شویم؟
معرفی ۱۰ شرکت مشهور و رده بالا که از پایتون استفاده می کنند
چرا زبان برنامه نویسی پایتون برای تازه کاران زبان مناسبی می باشد؟
آشنایی با مفاهیم پایه و کاربردی در زبان برنامه نویسی پایتون
آشنایی با ویژگیهای حرفهای پایتون که موجب سهولت در انجام کارها میشود
۱۵ کتابخانه مهم و پرطرفدار در زبان برنامهنویسی پایتون
۱۰ کاربرد اصلی استفاده از زبان برنامه نویسی پایتون در پروژه های بزرگ سازمانی
اصلی ترین عواملی که موجب کند بودن زبان برنامه نویسی پایتون شده است!
چقدر طول میکشد تا به برنامهنویسی ماهر در زبان پایتون تبدیل شویم؟
آشنایی با ۶ رویکرد کاربردی زبان برنامه نویسی پایتون
آشنایی با دکوراتورها در زبان برنامه نویسی پایتون
12 مزایا و معایب زبان برنامه نویسی پایتون برای توسعه وب
مقدمه ای بر یادگیری ماشین یا ماشین لرنینگ و کاربرد های آن
یادگیری ماشین با زبان برنامه نویسی پایتون چه کاربردهایی دارد؟
آشنایی با پیش نیازهای اصلی ماشین لرنینگ
بررسی جامع انواع مدل های ماشین لرنینگ و کاربردهای آن
مهم ترین تفاوت های هوش مصنوعی و یادگیری ماشین
آشنایی با درآمد و بازار کار ماشین لرنینگ در سال 2022
آشنایی جامع با هوش مصنوعی و کاربردهای AI
آشنایی جامع با یادگیری نظارت شده در ماشین لرنینگ
6 نکته کاربردی یادگیری ماشین لرنینگ
4 کاربرد اصلی یادگیری نظارت نشده در ماشین لرنینگ
4 کاربرد مهم ماشین لرنینگ در دیجیتال مارکتینگ
7 کاربرد ماشین لرنینگ و هوش مصنوعی در شبکه اجتماعی اینستاگرام
بررسی ۵ کاربرد جالب ماشین لرنینگ در سال ۲۰۲۲
آشنایی با سه مسیر اصلی جهت یادگیری ماشین لرنینگ
۹ کاربرد اصلی دیپ لرنینگ در زندگی روزانه
۶ ایده برای پروژه های یادگیری ماشین لرنینگ برای افراد مبتدی و تازه کار
شش زبان برنامه نویسی برتر در حوزه واقعیت مجازی
آشنایی با ۹ سرور دیسکورد برای علاقه مندان به زبان برنامه نویسی پایتون و ماشین لرنینگ
آشنایی با برترین نرم افزارهای هوش مصنوعی و کاربردهای آن
آشنایی جامع با اصلی ترین روش های یادگیری عمیق
آشنایی جامع با تمامی مباحث و مهم ترین کاربردهای شبکه عصبی کانولوشن
آشنایی جامع با درخت تصمیم و اصلی ترین کاربرد و مفاهیم آن در ماشین لرنینگ
درباره Matinus
با ورود به کارشناسی مهندسی کامپیوتر گرایش نرم افزار از سال 1385 به دنیای زیبای آی تی وارد شدم و فوق لیسانسم رو در رشته آی تی گرایش تجارت الکترونیک از دانشگاه خواجه نصیر طوسی گرفتم. از همون دوران شروع به ساختن وب سایت ها و سئو کردن اونها کردم. زمانی که هیچ کس نمی تونست سئو چیه! یکی پس از دیگری زبان های برنامه نویسی رو تست کردم؛ مثل سی پلاس پلاس ؛ سی شارپ ؛ جاوا ؛ جاوا اسکریپت ؛ سوییفت و .... با همشون برنامه نوشتم تا رسیدم به پایتون و با توجه به تجربه خودم فهمیدم که به این زبان بیشتر علاقه دارم چون در مدت سه ماه اول 24 ساعته پشت کامپیوتر بودم و با برترین اساتید جهان پایتون خودم رو ارتقا دادم تا پس از دو سه سال در پایتون سنیور شدم و اکنون می تونم اونو تدریس کنم. آموزش پایتون من زیادی وسواس گونه و جامعه و من پشت صحنه دستورات و حافظه رو بشما می گم که هیچکس این رو به شما نمیگه.... چون بلد نیستن!!! فقط بلدن از دستورات استفاده کنن. مطمئن باش بعد از آموزش پایتون من خیلی حرف برای گفتن داری و میتونی وارد دنیای هوش مصنوعی و یادگیری ماشین و علوم داده ها بشی و یک شغل بسیار پردرآمد در خارج از کشور بگیری ......
نوشتههای بیشتر از Matinus
دیدگاهتان را بنویسید