যখন পাইথন ইন্টারপ্রেটার একটি সোর্স ফাইল পড়ে, তখন এটি এতে পাওয়া সমস্ত কোড কার্যকর করে।
কোডটি কার্যকর করার আগে, এটি কয়েকটি বিশেষ ভেরিয়েবলকে সংজ্ঞায়িত করবে। উদাহরণস্বরূপ, যদি পাইথন ইন্টারপ্রেটার সেই মডিউলটিকে (সোর্স ফাইল) প্রধান প্রোগ্রাম হিসাবে চালায়, তবে এটি একটি বিশেষ __name__ ভেরিয়েবলকে একটি মান "__main__" সেট করে। যদি এই ফাইলটি অন্য মডিউল থেকে আমদানি করা হয়, __name__ মডিউলের নামে সেট করা হবে৷
এটি করার একটি কারণ হল যে কখনও কখনও আপনি একটি মডিউল (একটি .py ফাইল) লেখেন যেখানে এটি সরাসরি চালানো যেতে পারে। বিকল্পভাবে, এটি আমদানি এবং অন্য মডিউলে ব্যবহার করা যেতে পারে। মূল চেক করার মাধ্যমে, আপনি সেই কোডটি শুধুমাত্র তখনই কার্যকর করতে পারেন যখন আপনি মডিউলটিকে একটি প্রোগ্রাম হিসাবে চালাতে চান এবং যখন কেউ শুধুমাত্র আপনার মডিউল আমদানি করতে চায় এবং আপনার ফাংশনগুলিকে কল করতে চায় তখন এটি কার্যকর করতে পারে না৷
উদাহরণস্বরূপ, যদি আপনার কাছে নিম্নলিখিত কোড সহ 2টি ফাইল one.py এবং two.py থাকে:
one.py:
def func(): print("func() in one.py") print("Root of one.py") if __name__ == "__main__": print("one.py is being run directly") else: print("one.py is being imported")
Two.py:
import one print("Root of two.py") one.func() if __name__ == "__main__": print("two.py is being run directly") else: print("two.py is being imported")
এখন আপনি যদি চালান,
$ python one.py
আপনি আউটপুট পাবেন:
Root of one.py one.py is being run directly
কিন্তু আপনি যদি দৌড়ান,
$ python two.py
আপনি আউটপুট পাবেন:
Root of in one.py one.py is being imported Root of in two.py func() in one.py two.py is being run directly