কম্পিউটার

পাইথনে মডিউল পুনরায় লোড হচ্ছে?


পুনরায় লোড() - পূর্বে আমদানি করা মডিউল বা লোড করা মডিউল পুনরায় লোড করে। এটি এমন পরিস্থিতিতে কার্যকর হয় যেখানে আপনি একটি ইন্টারেক্টিভ সেশনের সময় বারবার একটি পরীক্ষা স্ক্রিপ্ট চালান, এটি সর্বদা আমরা যে মডিউলগুলি তৈরি করছি তার প্রথম সংস্করণ ব্যবহার করে, এমনকি আমরা কোডে পরিবর্তনও করেছি৷ সেই পরিস্থিতিতে আমাদের নিশ্চিত করতে হবে যে মডিউলগুলি পুনরায় লোড করা হয়েছে৷

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

সিনট্যাক্স

import importlib
importlib.reload(sys)

উদাহরণ

>>> import sys
>>> import importlib
>>> importlib.reload(sys)
<module 'sys' (built-in)>

যাইহোক, যদি আপনি একটি মডিউল পুনরায় লোড করার চেষ্টা করছেন যা আগে আমদানি করা হয়নি, তাহলে আপনি একটি ত্রুটি পেতে পারেন৷

>>> import importlib
>>> importlib.reload(sys)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
importlib.reload(sys)
NameError: name 'sys' is not defined

কিছু পয়েন্ট বোঝার জন্য, যখন পুনরায় লোড() কার্যকর করা হয় -

  • পাইথন মডিউলের কোড পুনরায় কম্পাইল করা হয় এবং মডিউল-স্তরের কোডটি পুনরায় কার্যকর করা হয়, যা মডিউলের অভিধানে নামের সাথে আবদ্ধ অবজেক্টের একটি নতুন সেট সংজ্ঞায়িত করে যা মূলত মডিউলটি লোড করেছিল সেই লোডারটি পুনরায় ব্যবহার করে। যাইহোক, মডিউলের init ফাংশন আবার লোড হয় না

  • পুরানো বস্তুগুলি শুধুমাত্র তাদের রেফারেন্স সংখ্যা শূন্যে নেমে আসার পরেই পুনরুদ্ধার করা হয়৷

  • মডিউল নেমস্পেসের নামগুলি যদি থাকে তবে নতুন অবজেক্টে পরিবর্তন করা হয়৷

  • পুরানো অবজেক্টের অন্যান্য রেফারেন্স (যেমন মডিউলের বাহ্যিক নাম) অগত্যা নতুন অবজেক্টকে বোঝায় না এবং প্রয়োজন হলে প্রতিটি নেমস্পেসে আপডেট করতে হবে।


  1. পাইথন গেটপাস মডিউল

  2. পাইথনের অন্যান্য মডিউলগুলিতে অনন্য বস্তুগুলিকে কীভাবে অ্যাক্সেসযোগ্য করা যায়?

  3. কিভাবে একটি পাইথন মডিউল অন্য মডিউল কল থেকে নিষিদ্ধ?

  4. আমি কিভাবে একটি পাইথন মডিউল আনলোড (পুনঃলোড) করব?