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

পাইথনে মডিউল রিলোড করা


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

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

সিনট্যাক্স

import importlib
importlib.reload(sys)

উদাহরণ

>>> import sys
>>> import importlib
>>> importlib.reload(sys)

তবে, যদি আপনি এমন একটি মডিউল রিলোড করার চেষ্টা করেন যা পূর্বে আমদানি করা হয়নি, তবে আপনি একটি এরর পেতে পারেন।

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

reload() এক্সিকিউট হওয়া সময় কিছু পয়েন্ট বুঝতে হবে:

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

  • পুরনো অবজেক্টগুলো শুধু তাদের রেফারেন্স কাউন্ট শূন্য হলে রিক্লেইম করা হয়।

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

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


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

  2. পাইথনে অনন্য অবজেক্ট অন্য মডিউলে অ্যাক্সেসIBLE করা (সিঙ্গলটন প্যাটার্ন)

  3. এক পাইথন মডিউল অন্য মডিউল কল না কর सके এমনভাবে বাধা দেওয়া

  4. পাইথন মডিউল আনলোড (রিলোড) করা