অজগরের কাজগুলি যে কোনও প্রোগ্রামের চলমান যুক্তিগুলির অনুকূলতর বাস্তবায়ন দেয়, ঝামেলা-মুক্ত কার্যকরকরণের সাথে একাধিকবার। পাইথনের সাজসজ্জারগুলিও ধারণাটির চারদিকে ঘোরে এই নিবন্ধে, আমরা মাধ্যমে যেতে হবে এই অজগর সাজসজ্জা টিউটোরিয়ালের বিভিন্ন উদাহরণ সহ বিশদ সহ সজ্জাবিদ। নিম্নলিখিত বিষয়গুলি এই ব্লগে আলোচনা করা হয়েছে।
পাইথনে কাজগুলি কী কী?
পাইথনের সজ্জাগুলি একটি উন্নত বিষয় is সুতরাং এগিয়ে যাওয়ার আগে নিশ্চিত করুন যে আপনি পাইথন ফাংশনগুলির ধারণাটি পুরোপুরি পরিষ্কার করেছেন। পাইথনের সাজসজ্জার দিকে যাওয়ার আগে এমন কয়েকটি পূর্বশর্ত রয়েছে যা বুঝতে হবে।
প্রথম শ্রেণি অবজেক্টস
অভ্যন্তরীণ ফাংশন
প্রথম শ্রেণীর অবজেক্টস
অজগরটিতে, সমস্ত কিছুকে একটি বস্তু হিসাবে বিবেচনা করা হয় তথ্যের ধরণ , ফাংশন খুব। অতএব, একটি ফাংশন প্রথম-শ্রেণীর অবজেক্ট হিসাবেও পরিচিত এবং তর্ক হিসাবে এটি পাস করা যেতে পারে।
এটি কীভাবে কাজ করে তা বোঝার জন্য একটি উদাহরণ দেখুন at
Def func1 (নাম): ফেরত f 'হেলো {নাম}' ডিফ ফানক 2 (নাম): ফেরত f '{নাম}, আপনি কী করছেন?' Def func3 (func4): ফান্ট ফান 4 ('প্রিয় শিক্ষানবিশ') মুদ্রণ (ফানক 3 (ফানক 1)) মুদ্রণ (ফানক 3 (ফানক 2))
আউটপুট: হ্যালো প্রিয় শিক্ষার্থী প্রিয় শিক্ষানবিশ, আপনি কেমন আছেন?
উপরের উদাহরণে, আমরা এটি ব্যবহার করেছি নাম পেতে এবং func3 এ আর্গুমেন্ট হিসাবে func1 এবং func2 পাস করেছেন।
hadoop অ্যাডমিন বনাম hadoop বিকাশকারী
অভ্যন্তরীণ ফাংশন
পাইথনে, কোনও ফাংশনের ভিতরে ফাংশনগুলি সংজ্ঞায়িত করা সম্ভব। এই ফাংশনটিকে অভ্যন্তরীণ ফাংশন বলা হয়। পাইথনে আমরা কীভাবে অভ্যন্তরীণ ফাংশনগুলি ব্যবহার করতে পারি তা দেখানোর জন্য এখানে একটি উদাহরণ দেওয়া আছে।
Def func (): মুদ্রণ ('প্রথম ফাংশন') Def ফানক 1 (): মুদ্রণ ('প্রথম শিশু ফাংশন') ডিফ ফানক 2 (): মুদ্রণ ('দ্বিতীয় শিশু ফাংশন') ফানক 1 () ফানক 2 () ফানক ()
আউটপুট: প্রথম ফাংশন প্রথম শিশু ফাংশন দ্বিতীয় শিশু ফাংশন
উপরের প্রোগ্রামে এটি কীভাবে শিশুদের কার্যকারিতা ঘোষিত হয় তা বিবেচ্য নয়। আউটপুট নির্ভর করে কিভাবে শিশু ফাংশনগুলি কার্যকর করা হয় তার উপর। এগুলিকে স্থানীয়ভাবে ফানক () দিয়ে স্কোপ করা হয় যাতে তাদের আলাদাভাবে বলা যায় না।
আপনি যদি তাদের আলাদাভাবে কল করেন তবে আপনি ত্রুটি পাবেন কারণ সেগুলি সঞ্চিত রয়েছে পরিবর্তনশীল ফানক () এর অভ্যন্তরে এবং শুধুমাত্র ফানক () কল করা যেতে পারে।
একটি ফাংশন থেকে একটি ফাংশন ফিরে
অন্য ফাংশনটি ব্যবহার করে কোনও ফাংশন ফেরানো সম্ভব। এটি বুঝতে নীচের উদাহরণটি দেখুন।
ডিফ ফানক (এন): ডিএফ ফানক 1 (): রিটার্ন 'এডুরেকা' ডিফ ফানক 2 (): রিটার্ন 'পাইথন' যদি এন == 1: ফান্ট ফান 1 অন্য: ফিরক ফানক 2 এ = ফানক (1) বি = ফানক (2) মুদ্রণ ( ক ()) মুদ্রণ (খ ())
আউটপুট: এডুরেকা পাইথন
পাইথনে সজ্জা
পাইথনের সাজসজ্জাকারীরা খুব শক্তিশালী যা স্থায়ীভাবে পরিবর্তন না করে কোনও ফাংশনের আচরণ পরিবর্তন করে। এটি মূলত অন্য ফাংশনটি আবৃত করে এবং যেহেতু উভয় ফাংশন কলযোগ্য, তাই এটি কলযোগ্য ফেরত দেয়।
অন্ধকারে, একটি সজ্জাকারী একটি ফাংশন আবৃত এবং তার আচরণ পরিবর্তন করে। আসুন আমরা কীভাবে পাইথনে সাজসজ্জারের সাথে কাজ করতে পারি তা বোঝার জন্য একটি সাধারণ উদাহরণটি একবার দেখি।
Def ফাংশন 1 (ফাংশন): ডিএফ র্যাপার (): মুদ্রণ ('হ্যালো') ফাংশন () মুদ্রণ ('পাইথন এডুড়েকায় আপনাকে স্বাগতম') রিটার্ন র্যাপার ডিফ ফাংশন 2 (): মুদ্রণ ('পাইথনিস্তা') ফাংশন 2 = ফাংশন 1 (ফাংশন 2) ফাংশন 2 ( )
আউটপুট: হ্যালো পাইথনস্তা পাইথন এডুরেকায় আপনাকে স্বাগতম
প্রোগ্রামারদের জন্য জিনিসগুলিকে কিছুটা সহজ করার জন্য আমাদের কাছে পাইথন ডেকোরেটর সহ একটি সিনট্যাকটিক চিনি রয়েছে। এটি কীভাবে কাজ করে তা বুঝতে নীচের একটি উদাহরণ দেখুন।
স্ট্রিংকে ডেটে রূপান্তর করতে হয়
Def ফাংশন 1 (ফাংশন): ডিএফ র্যাপার (): মুদ্রণ ('হ্যালো') ফাংশন () প্রিন্ট ('আপনি কেমন আছেন?') রিটার্ন র্যাপার @ ফাংশন 1 ডিফ ফাংশন 2 (): মুদ্রণ ('পাইথনিস্তা') ফাংশন 2 ()
আউটপুট: হ্যালো পাইথনিস্তা আপনি কেমন আছেন?
আউটপুট উপরের প্রোগ্রামটির মতো হবে, কেবলমাত্র পার্থক্য হল আমরা @ চিহ্ন সহ পাই সিনট্যাক্সটি ব্যবহার করেছি।
তর্ক সঙ্গে সজ্জিত ব্যবহার
আপনার যখন আর্গুমেন্ট সহ কোনও ফাংশন থাকে, তখন এটি সাজসজ্জার ফাংশনটির জন্য কৌশলযুক্ত হয়ে ওঠে কারণ এটি ঘোষণায়ও যুক্তিগুলির প্রয়োজন। এটি মোকাবেলা করার জন্য আমরা অভ্যন্তর মোড়ক ফাংশনে * আরগস এবং ** কাওয়ার্গ ব্যবহার করতে পারি। এটি বুঝতে নীচের উদাহরণটি একবার দেখুন।
Def ফাংশন 1 (ফাংশন): ডিএফ র্যাপার (* আরগস, ** কোয়ার্গস): মুদ্রণ ('হ্যালো') ফাংশন (* আরগস, ** কোয়ার্গস) প্রিন্ট ('এডুরেকাতে স্বাগতম') রিটার্ন র্যাপার @ ফাংশন 1 ডিফ ফাংশন 2 (নাম): মুদ্রণ (চ '{নাম}') ফাংশন 2 ('পাইথনিস্টা')
আউটপুট: হ্যালো পাইথনিস্ট এডুরেকে স্বাগতম
সজ্জিত ক্রিয়াকলাপ থেকে মূল্য ফেরত
আসুন আমরা একটি সজ্জিত ফাংশন থেকে কীভাবে কোনও মান ফিরিয়ে দিতে পারি তা দেখতে একটি উদাহরণ দেখুন look
Def ফাংশন 1 (ফাংশন): ডিএফ র্যাপার (* আরগস, ** কোয়ার্গস): ফাংশন (* আরগস, ** কোয়ার্গস) প্রিন্ট ('এটি কাজ করেছে') রিটার্ন রিভার @ ফাংশন 1 ডিফ ফাংশন 2 (নাম): মুদ্রণ (এফ '{নাম} ') ফাংশন 2 (' পাইথন ')
আউটপুট: অজগর এটি কাজ করে
কোনও ত্রুটি এড়ানোর জন্য আর্গুমেন্টের সাহায্যে আপনার মোড়ক ফাংশনটি ফিরে আসার বিষয়টি নিশ্চিত করুন।
পাইথনে অভিনব সাজসজ্জা
এখন আমরা জানি যে কীভাবে অলংকারগুলিতে অলঙ্কারগুলি কাজ করে, আসুন কয়েকটি উদাহরণের সাহায্যে একটি জটিল বৈশিষ্ট্যগুলি ঘুরে দেখি।
ক্লাস সজ্জা
পাইথনে কোনও শ্রেণি সাজানোর দুটি উপায় রয়েছে। প্রথমটি যেখানে আপনি কোনও শ্রেণীর অভ্যন্তরীণ পদ্ধতিগুলি সজ্জিত করতে পারেন সেখানে @ ক্লাসমেডোথড, @ স্ট্যাটিকমোথড এবং পাইথনে @ প্রপার্টি এর মতো অন্তর্নির্মিত সজ্জা রয়েছে। @ ক্লাসমেডোথ এবং @ স্ট্যাটিকমেডোস্ট একটি শ্রেণীর ভিতরে এমন পদ্ধতিগুলি সংজ্ঞায়িত করে যা কোনও শ্রেণীর অন্য কোনও উদাহরণের সাথে সংযুক্ত থাকে না। @ প্রপার্টি সাধারণত শ্রেণীর বৈশিষ্ট্যের গেটার এবং সেটটারগুলি কাস্টমাইজ করতে ব্যবহৃত হয়। এটি বোঝার জন্য একটি উদাহরণ দেখে নেওয়া যাক।
বর্গ স্কোয়ার: ডিএফ __init __ (স্ব, পাশ): স্ব.আওসাইড = সাইড @ প্রোপার্টি ডিফ সাইড (স্ব): ফিরে আসুন স্ব.দ্বীপ @ পাশ.সেটর ডিফ সাইড (স্ব, মান): যদি মান & জিটি = 0: স্ব। অন্য মানটি মুদ্রণ করুন ('ত্রুটি') @ প্রপার্টি ডিএফ অঞ্চল (স্ব): রিটার্ন স্ব ._সাইড ** 2 @ ক্লাসমেডাফ ডিফ ইউনিট_স্কয়ার (সিএসএস): রিটার্ন ক্লস (1) এস = স্কোয়ার (5) প্রিন্ট (s.side) মুদ্রণ (s.area)
আউটপুট: 5 25
ক্লাস সাজানোর আরেকটি উপায় হ'ল পুরো ক্লাসটি সাজানো। আসুন এটি বোঝার জন্য একটি উদাহরণ নিই।
ডেটাচ্লাস থেকে ডেটাগ্লাস আমদানি করুন ডেটাগ্লাস @ ডেটাগ্লাস ক্লাস কার্ড: র্যাঙ্ক: স্ট্রেট মামলা: স্ট
কোনও শ্রেণি সজ্জিত করা তার পদ্ধতির প্রতিফলন করে না। এটি প্রায়শই কোনও ফাংশনের সজ্জা লেখার অনুরূপ, কেবলমাত্র পার্থক্যটি কোনও ফাংশনের পরিবর্তে যুক্তির ক্লাস the
একক ক্লাস
একটি সিঙ্গলটন ক্লাসে কেবল একটি উদাহরণ রয়েছে। ট্রু, নন, ইত্যাদি সহ অজগরটিতে প্রচুর সিলেটলেট রয়েছে। আসুন এটি আরও ভাল করে বোঝার জন্য একটি উদাহরণ দেখে নেওয়া যাক।
ডিফ সিঙ্গেলটন (ক্লস): আমদানি ফান্টুলস ডিএফ সিঙ্গেলটন (ক্লস): @ ফান্টটুলস.আর্যাপস (ক্লস) ডিএফ র্যাপার (* আরগস, ** কোয়ার্গস): র্যাপার নয় যদি এই পদক্ষেপ: র্যাপার.ইনটেন্স = ক্লস (* আরগস, ** কাওয়ার্গস) রিটার্ন .আইনস্ট্যান্স = কোনও রিটার্ন র্যাপার নেই @ সিংহেলটন ক্লাস ওয়ান: প্রথম পাস করুন = এক () দ্বিতীয় = এক () মুদ্রণ (প্রথম দ্বিতীয়)
আউটপুট: সত্য
‘হ'ল’ ব্যবহার করা একই জিনিসগুলির জন্য কেবল সত্য প্রত্যাবর্তন করে। উপরের উদাহরণটি অন্য ফাংশন ডেকরেটারের মতো একই পদ্ধতির ব্যবহার করে। পার্থক্য কেবলমাত্র আমরা ফাংশনের পরিবর্তে ক্লস ব্যবহার করেছি। এছাড়াও, প্রথম এবং দ্বিতীয়টি হুবহু একই উদাহরণ।
নেস্টিং সজ্জা
আপনি একে অপরের উপরে স্ট্যাক করে একাধিক আলংকারক ব্যবহার করতে পারেন। এটি কীভাবে কাজ করে তা বোঝার জন্য একটি উদাহরণ নেওয়া যাক।
@ ফাংশন 1 @ ফাংশন 2 ডিফ ফাংশন (নাম): মুদ্রণ (এফ '{নাম}')
এভাবেই আমরা নেস্টেড ডেকোরেটরগুলিকে একে অপরের সাথে স্ট্যাক করে ব্যবহার করতে পারি। উপরের উদাহরণে এটি কেবল একটি নিখুঁত চিত্র, এটি কাজ করার জন্য আপনাকে ফাংশন 1 এবং ফাংশন 2 এর প্রতিটি অভ্যন্তরের মোড়ক ফাংশন সহ সংজ্ঞায়িত করতে হবে।
একটি সাজসজ্জার যুক্তি
এটি একটি ডেকরেটারে যুক্তিগুলি পাস করার জন্য সর্বদা দরকারী। আসুন নীচের উদাহরণটি বিবেচনা করা যাক।
আমদানি করা ফান্টুলগুলি ডিএফ রিপিট (নাম্বার): ডিফ ডেকোরেটর_রেপিয়াট (ফানক): @ ফান্টকুলস.আর্যাপস (ফানক) ডিএফ র্যাপার (* আরগস, ** কাওয়ার্গস): _ রেঞ্জের জন্য (নাম্বার): মান = ফানক (* আরগস, ** কাওয়ার্গস) ) রিটার্ন মান রিটার্ন রিভার রিটার্ন সাজসজ্জার_আরপিয়্যাট @ রিপিট (নাম = 4) ডিফ ফাংশন (নাম): মুদ্রণ (এফ '{নাম}') ফাংশন ('পাইথন')
আউটপুট: পাইথন পাইথন পাইথন পাইথন
এটি আমাদের এই নিবন্ধের শেষের দিকে নিয়ে আসে যেখানে আমরা উদাহরণস্বরূপ পাইথনে কীভাবে সজ্জা ব্যবহার করতে পারি তা শিখেছি। আমি আশা করি যে এই পাইথন ডেকোরেটর টিউটোরিয়ালে আপনার সাথে যা ভাগ করা হয়েছে তার সাথে আপনি পরিষ্কার হয়ে গেছেন
যদি আপনি 'পাইথন ডেকোরেটর টিউটোরিয়াল' সম্পর্কিত এই নিবন্ধটি খুঁজে পেয়ে থাকেন তবে এটি দেখুন বিশ্বজুড়ে ছড়িয়ে থাকা 250,000 এরও বেশি সন্তুষ্ট শিক্ষার্থীর নেটওয়ার্ক সহ একটি বিশ্বস্ত অনলাইন লার্নিং সংস্থা।
<> বর্গাকারে অপারেটর
আমরা এখানে আপনার যাত্রার প্রতিটি পদক্ষেপে আপনাকে সহায়তা করতে এবং এমন একটি পাঠ্যক্রম নিয়ে এসেছি যা শিক্ষার্থী এবং পেশাদারদের জন্য ডিজাইন করা হয়েছে । কোথাকারটি আপনাকে পাইথন প্রোগ্রামিংয়ে একটি প্রধান সূচনা দেওয়ার জন্য এবং বিভিন্ন এবং মূল এবং উন্নত পাইথন উভয় ধারণার পাশাপাশি প্রশিক্ষণের জন্য ডিজাইন করা হয়েছে পছন্দ
যদি আপনার কোনও প্রশ্ন আসে তবে নির্দ্বিধায় আপনার সমস্ত প্রশ্ন 'পাইথন ডেকোরেটর টিউটোরিয়াল' এর মন্তব্য বিভাগে জিজ্ঞাসা করুন এবং আমাদের দলটি উত্তর দিতে পেরে খুশি হবে।