কম্পিউটার টিউটোরিয়াল

পাইথনে মডিউল লোকেট ও এক্সিকিউট করা (runpy মডিউল)


কমান্ড লাইনের -m অপশন একটি প্রদত্ত মডিউল খুঁজে বের করে এবং সেটিকে __main__ মডিউল হিসেবে এক্সিকিউট করে। এই মেকানিজমটি আंतरিকভাবে পাইথনের স্ট্যান্ডার্ড মডিউল runpy দ্বারা সমর্থিত, যা স্ক্রিপ্টগুলো ফাইল সিস্টেমের বদলে পাইথন মডিউল নেমস্পেস ব্যবহার করে লোকেট করার অনুমতি দেয়।

এই মডিউল দুটি ফাংশন সংজ্ঞায়িত করে:

run_module()

এই ফাংশনটি নির্দিষ্ট মডিউলের কোড এক্সিকিউট করে এবং ফলস্বরূপ মডিউল গ্লোবালস ডিকশনারি রিটার্ন করে।

mod_name আর্গুমেন্টটি একটি অ্যাবসোলিউট মডিউল নাম হতে হবে। যদি মডিউল নামটি একটি নরমাল মডিউলের বদলে একটি প্যাকেজকে রেফার করে, তবে সেই প্যাকেজটি ইম্পোর্ট হয় এবং সেই প্যাকেজের ভেতরের __main__ সাবমডিউলটি এক্সিকিউট হয় এবং ফলস্বরূপ মডিউল গ্লোবালস ডিকশনারি রিটার্ন হয়।

স্পেশাল গ্লোবাল ভেরিয়েবলগুলো __name__, __spec__, __file__, __cached__, __loader__ এবং __package__ মডিউল কোড এক্সিকিউট হওয়ার আগে গ্লোবালস ডিকশনারিতে সেট হয়।

__name__ সেট হয় mod_name + '.__main__' যদি নামক মডিউলটি একটি প্যাকেজ হয়, অন্যথায় mod_name আর্গুমেন্টটি।

__file__, __cached__, __loader__ এবং __package__ মডিউল スペック (spec) অনুযায়ী নরমালি সেট হয়।

run_path()

এই ফাংশনটি প্রদত্ত পথে থাকা ফাইলের কোড এক্সিকিউট করে এবং ফলস্বরূপ মডিউল গ্লোবালস ডিকশনারি রিটার্ন করে। সরবরাহকৃত পথ একটি পাইথন সোর্স ফাইল, একটি কম্পাইলড বাইটকোড ফাইল, বা একটি বৈধ sys.path এন্ট্রি হতে পারে যেটিতে একটি __main__ মডিউল থাকে (যেমন: একটি 탑-লেভেল __main__.py ফাইল ধারণকারী জিপফাইল)।

স্পেশাল গ্লোবাল ভেরিয়েবলগুলো __name__, __spec__, __file__, __cached__, __loader__ এবং __package__ মডিউল কোড এক্সিকিউট হওয়ার আগে গ্লোবালস ডিকশনারিতে সেট হয়।

__name__ সেট হয় run_name যদি এই অপশনাল আর্গুমেন্ট None না হয়, অন্যথায় ''।

উদাহরণ

নিচের স্ক্রিপ্টটি runpyexample.py নামে সেভ করুন:

# runpy example
def add(x, y):
    return x + y

def main():
    x, y = 10, 20
    print(add(x, y))
    return

if __name__ == '__main__':
    main()

উপরের উদাহরণটি এক্সিকিউট করার সাধারণ প্রক্রিয়া নিচের মতো:

>>> import runpyexample as rp
>>> rp.main()
30
>>>

এখন আমরা runpy মডিউল ব্যবহার করে এটি বাস্তবে ইম্পোর্ট ছাড়া এক্সিকিউট করব।

>>> import runpy
>>> runpy.run_module('runpyexample', run_name='__main__')
30

আপনি run_path() ফাংশনটিও ব্যবহার করতে পারেন।

>>> runpy.run_path('runpyexample.py', run_name='__main__')
30

আগে বলা মতে, runpy পাইথন কমান্ড লাইনের -m সুইচকে সমর্থন করে।

E:\python37>python -m runpyexample
30
  1. পাইথনে xlsxwriter মডিউল ব্যবহার করে এক্সেল ফাইল তৈরি ও লেখা

  2. পাইথন getpass মডিউল

  3. পাইথনে openpyxl ব্যবহার করে এক্সেল ফাইল পড়া ও লিখা

  4. পাইথন ক্লাস মডিউল এবং/অথবা প্যাকেজে কীভাবে অর্গানাইজ করবেন?