মডিউল পাইথনের একটি অবজেক্ট যেটা একটা রেফারেন্স লাইব্রেরি হিসেবে কাজ করে। এক কথায় বলতে গেলে এক একটা মডিউল এক একটা ফাইল যেখানে বিভিন্ন ক্লাস ফাংশন বা ভেরিয়েবলগুলোর ডেফিনিশন থাকে। কোন বড় সফটওয়্যার তৈরির ক্ষেত্রে বিভিন্ন রকম কাজ করার প্রয়োজন পড়ে, এক একটা কাজকে আলাদাভাবে মডিউল করে ব্যবহার করলে ব্যবহারে যেমন সুবিধা পাওয়া যায় তেমনই মনে রাখাও সহজ হয়।

এতদিন আমরা যতগুলো প্রোগ্রাম লিখেছি সেগুলো সব একটা ফাইলেই সীমাবদ্ধ ছিল। এই উদাহরণের জন্য আমাদের দুইটি ফাইলের প্রয়োজন পড়বে, একটা হচ্ছে মডিউল ফাইল অন্যটা স্ক্রিপ্ট ফাইল যেখানে মডিউলটা কল করা হবে।

গতপর্বগুলোতে আমরা যে গুন/ভাগের প্রোগ্রাম লিখেছিলাম সেগুলোর পুনঃব্যবহার করব। কোডগুলো লিখে ফেলি –

#Function Definition for multiplication
def multiply_function(x,y):
    z=x*y
    return z

#Function Definition for division
def division_function(x,y):
    z=x/y
    return z

এখন একটা ফাইল তৈরি করে তার নাম testmodule.py দিয়ে save করি। এখানে শুধু ফাংশনের ডেফিনিশন দেওয়া হয়েছে, কোথাও কল করা হয়নি। অন্য একটি ফাইলে এটা import করব এবং সেখান থেকে কল করব। নিচের কোডগুলো লিখে প্রোগ্রামটিকে রান করি –

# This program is an example of a module in python
import testmodule

print(testmodule.multiply_function(10,5)) #calling a function from a user defined module
print(testmodule.division_function(10,5)) #calling a function from a user defined module

ফলাফল-

50
2.0

অর্থাৎ সঠিক ফলাফল এসেছে, শুধু ফাংশন দুইটিকে একটি মডিউল থেকে কল করা হয়েছে।

উল্লেখ্য, মডিউল কে ইমপোর্ট করতে import কি-ওয়ার্ড ব্যবহার করতে হয় এবং কোন ফাংশন বা ভেরিয়েবলকে access করতে ডট অপারেটর (.) ব্যবহার করা হয়।

মডিউলের ছদ্ম বা উপনাম ব্যবহার (aliasing a module name)

উপরের উদাহরণটিতে আমরা মডিউলের নামটি সরাসরি ব্যবহার করেছি। মূল নাম ব্যবহার না করে ছদ্মনামেও মডিউলকে ডিফাইন করা যায়। সেক্ষেত্রে as কি-ওয়ার্ডটি ব্যবহার করা হয়।

# This program is an example of a module in python
import testmodule as tm

print(tm.multiply_function(10,5)) #calling a function from a user defined module
print(tm.division_function(10,5)) #calling a function from a user defined module

ফলাফল-

50
2.0

অর্থাৎ সবকিছুই ঠিক আছে, শুধু নামটা পরিবর্তন হয়ে গেছে।

dir() ফাংশন

একটি মডিউল অনেক বড় হতে পারে আবার ছোটও হতে পারে। এমতাবস্থায় সেই মডিউলে কি কি ভেরিয়েবল বা ফাংশন আছে জানা খুবই দুষ্কর, আর এই সমস্যার জন্য আছে dir() ফাংশন। এই ফাংশনের মধ্যে কোন মডিউলকে কল করলে ঐ মডিউলে কি কি আছে সেটা দেখায়। বিষয়টা উদাহরণের মাধ্যমে দেখে যাক-

import testmodule as tm

fn=dir(tm)
print(fn)

ফলাফল-

['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'division_function', 'multiply_function']

প্রথমের দিকে দেখা যাচ্ছে কিছু হিজিবিজি ডিরেক্টরি আছে, আগুলো আসলে সিস্টেম ফাইল। শেষের দিকে দেখতে পাচ্ছি যে আমাদের ডিফাইন করে ফাংশন দুইটি আছে – division_function এবং multiply_function

মডিউলের নির্দিষ্ট কোন অংশকে import করা

উপরের উদাহরণে আমরা যখন testmodule মডিউলকে import করেছি তখন সমস্ত কিছুই import হয়েছে। এখন যদি শুধুমাত্র একটি নির্দিষ্ট অংশকে import করতে চাই তাহলে সেটা from কি-ওয়ার্ড দিয়ে করতে হয়। একটা উদাহরণ দেখে নেই –

from testmodule import multiply_function as mf

print(mf(10,5))

ফলাফল-

50

এখানে from কিওয়ার্ড দিয়ে শুধুমাত্র multiply_function কে import করা হয়েচে। এখন আর division_function টি কাজ করবে না।