অন্যান্য প্রোগ্রামিং ভাষার বিপরীতে, পাইথন একটি প্রধান ফাংশন থেকে স্পষ্টভাবে কোড চালানো শুরু করার জন্য ডিজাইন করা হয়নি। __name__ নামক একটি বিশেষ ভেরিয়েবল প্রধান ফাংশনের কার্যকারিতা প্রদান করে। যেহেতু এটি পাইথন ভাষায় একটি অন্তর্নির্মিত ভেরিয়েবল, তাই এই ভেরিয়েবলের মান নিচের মত দেখতে আমরা একটি প্রোগ্রাম লিখতে পারি।
print type(__name__) print __name__
উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয় -
<type 'str'> __main__
আপনি উপরে দেখতে পাচ্ছেন __name__ ভেরিয়েবলের মান স্ট্রিং ডেটা টাইপের এবং __main__ এর সমান।
নিচে __name__ ভেরিয়েবলের দুটি মূল বৈশিষ্ট্য রয়েছে।
1. আপনি যখন কোনো ভালোভাবে লেখা স্ট্যান্ড-অ্যালোন পাইথন স্ক্রিপ্ট চালান যা অন্য কোনো স্ক্রিপ্টকে উল্লেখ করে না, তখন __name__ ভেরিয়েবলের মান __main__ এর সমান।
চলুন standalone.py নামে একটি প্রোগ্রাম লিখি এই বৈশিষ্ট্যটি চিত্রিত করতে৷
৷def func1(): print 'The value of __name__ is ' + __name__ if __name__ == '__main__': func1()
উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয় -
The value of __name__ is __main__
প্রত্যাশিত হিসাবে __name__ ভেরিয়েবল মূল্যায়ন করে __main__ তাই আউটপুট।
২. দ্বিতীয় বৈশিষ্ট্যটি হল একটি পাইথন স্ক্রিপ্ট অন্যটিতে আমদানি করা। এই ধরনের পরিস্থিতিতে, দুটি ভিন্ন স্কোপ বলে মনে হচ্ছে যা প্রধান() ফাংশন হিসাবে বিবেচনা করা যেতে পারে। প্রথম স্কোপটি বর্তমানে চলমান প্রোগ্রামের __main__ ভেরিয়েবল এবং দ্বিতীয়টি বর্তমান প্রোগ্রামে ব্যবহৃত আমদানি করা স্ক্রিপ্টের __main__ ভেরিয়েবলের স্কোপ হতে পারে।
তাই কোন __main__ ভেরিয়েবল ব্যবহার করা হবে
যখন আপনি আমদানি করা স্ক্রিপ্ট থেকে একটি ফাংশন চালান, তখন __name__ ভেরিয়েবলটি স্ক্রিপ্টের প্রকৃত নামের সাথে মূল্যায়ন করবে এবং __main__ এর সমান নয়।
কিন্তু যখন আপনি বর্তমান প্রোগ্রাম থেকে নাম ভেরিয়েবলের মান খুঁজে বের করেন, আমদানি করা স্ক্রিপ্ট উল্লেখ না করে, এটি __main__ এ প্রত্যাশিত মূল্যায়ন করবে, কারণ এটি লেভেল 0 ইনডেনশনে প্রোগ্রামের সুযোগ।
নিচের প্রোগ্রামটি এই উদাহরণটি তুলে ধরে।
উদাহরণ
import standalone as sa print('Running the imported script') sa.func1() print('\n') print('Running the current script') print 'The value of __name__ is ' + __name__
আউটপুট
উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয় -
Running the imported script The value of __name__ is standalone Running the current script The value of __name__ is __main__
এই পদ্ধতির উপযোগিতা হল যখন কোড if __name__ =="__main__":ব্যবহার করা হয়, পাইথন ইন্টারপ্রেটার চেক করে যে এটি বর্তমানে কার্যকর করা স্ক্রিপ্টকে পার্স করছে কিনা, অথবা এটি সাময়িকভাবে অন্য বাহ্যিক স্ক্রিপ্ট পার্স করছে কিনা। এইভাবে প্রোগ্রামার বাহ্যিক স্ক্রিপ্ট থেকে কোডের লাইন চালানোর পাশাপাশি পরিস্থিতির উপর নির্ভর করে বর্তমানে কার্যকর করা স্ক্রিপ্ট থেকে প্রোগ্রামের বিভিন্ন অংশের আচরণ নিয়ন্ত্রণ করার ক্ষমতা রাখে।