মডিউল পাইথনের একটি অবজেক্ট যেটা একটা রেফারেন্স লাইব্রেরি হিসেবে কাজ করে। এক কথায় বলতে গেলে এক একটা মডিউল এক একটা ফাইল যেখানে বিভিন্ন ক্লাস ফাংশন বা ভেরিয়েবলগুলোর ডেফিনিশন থাকে। কোন বড় সফটওয়্যার তৈরির ক্ষেত্রে বিভিন্ন রকম কাজ করার প্রয়োজন পড়ে, এক একটা কাজকে আলাদাভাবে মডিউল করে ব্যবহার করলে ব্যবহারে যেমন সুবিধা পাওয়া যায় তেমনই মনে রাখাও সহজ হয়।
এতদিন আমরা যতগুলো প্রোগ্রাম লিখেছি সেগুলো সব একটা ফাইলেই সীমাবদ্ধ ছিল। এই উদাহরণের জন্য আমাদের দুইটি ফাইলের প্রয়োজন পড়বে, একটা হচ্ছে মডিউল ফাইল অন্যটা স্ক্রিপ্ট ফাইল যেখানে মডিউলটা কল করা হবে।
গতপর্বগুলোতে আমরা যে গুন/ভাগের প্রোগ্রাম লিখেছিলাম সেগুলোর পুনঃব্যবহার করব। কোডগুলো লিখে ফেলি –
#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 টি কাজ করবে না।
turtle.Turtle() এখানে T বড় হাতের লেখা হয় কের?
সম্পূর্ণ কোড দিলে সঠিকভাবে বলা যেত।
এখান থেকে যতটুকু বোঝা যাচ্ছে তা হল turtle মডিউল এর Turtle() ক্লাস কে এক্সেস করা হয়েছে। সাধারণত ক্লাসের instance তৈরি করার জন্য এমন ব্যবহার করা হয়।
বড় হাতের অক্ষর দিয়ে শুরু হলে সেটাকে সাধারণত ক্লাস বোঝানো হয়। বিস্তারিত জানতে এই আর্টিকেলটি পড়ে দেখতে পারেন – https://shahinur.com/bn/পাইথনে-অবজেক্ট-ওরিয়েন্টে/#Class