Python Module(পাইথন মডিউল)
পাইথনে, মডিউল হল কেবলমাত্র পাইথন কোড ধারণকারী “.py” এক্সটেনশনের ফাইল যা অন্য একটি পাইথন প্রোগ্রামের মধ্যে ইমপোর্ট করা যায়।
আমরা মডিউলকে একটি কোড লাইব্রেরির মতো বা একটি ফাইলের মতো বিবেচনা করতে পারি যাতে অনেক রকমের ফাংশন থাকতে পারে। মডিউল ফাইলটিকে ইমপোর্ট করে আমরা ঐ ফাংশন গুলোকে ব্যবহার করতে পারি।
একটি উদাহারন দেখা যাক। module.py নামের একটি ফাইল করা হল এবং নিচের ফাংশন গুলো তাতে রাখা হল-
def sum(value1, valu2): return valu1 + value2 def sub(value1, value2): return value1 – value2
এখন অপর একটি ফাইল এ আমরা এই মডিউল ফাইল কে ইমপোর্ট করে এই মডিউল কে নিম্নোক্তভাবে পেতে পারি-
import module
def calculate(value1, value2, **kwargs):
if "sum" in kwargs:
return module.sum(value1, value2)
elif "sub" in kwargs:
return module.sub(value1, value2)
else:
return"pass a valid kwargs!"
calculate(20, 10, key="sum")
আমরা চাইলে নিম্নোক্তভাবে ইমপোর্ট করতে পারি-
from module import sum, sub
কিন্তু সেজন্য ফাংশন গুলিকে মডিউল এর নাম ধরে না ডেকে , তাদের নাম ধরেই কল করতে হবে
from module import sum , sub
def calculate(value1, value2, **kwargs):
if"sum"in kwargs:
return sum(value1, value2)
elif "sub"in kwargs:
return sub(value1, value2)
else:
return"pass a valid kwargs!"
calculate(20, 10, key="sum")
উদাহরন
Example-1:
main.py
from login import user_login
username = input("Enter username : ")
password = input("Enter password : ")
if user_login(username, password):
print("Successfully logged in")
else:
print("Unauthorized Access !")
login.py
User login module
defuser_login(username,password):
listed_user={
"admin":"123456",
"demo":"1568"
}
if username in listed_user and listed_user[username] == password:
returnTrue
returnFalse
Example-2:
some_module.py
player = {
"name": "Mashrafee Bin Mortuza",
"age": 40,
"country": "Bangaldesh"
}
main.py
import some_module
somename = some_module.player["name"]
print(somename)# Mashrafee Bin Mortuza
Example-3:
(renamming a module while importing)
some_module.py
player = {
"name": "Mashrafee Bin Mortuza",
"age": 40,
"country": "Bangaldesh"
}
main.py
import some_module as player_info # rename
somename = player_info.player["name"] # access via rename
print(somename)# Mashrafee Bin Mortuza
Example-4:
চলেন বিল্ট-ইন ( পাইথন এর তৈরীকৃত ) একটি মডিউল দেখি , যেখানে আমরা স্ক্রিপ্ট চালানোর সময় কিছু সংখ্যা দিয়ে দিয়ে অতিরিক্তি এবং এদের যোগফল পাবো
import sys
print(sys.argv)
first_argument = sys.argv[1]
second_argument = sys.argv[2]
print(f"Sum = {int(first_argument) + int(second_argument)}")
টার্মিনাল / পাওয়ার শেল এ গিয়ে লিখবো **python3 main.py 10 20**
viva@vivacom-pc:~/Desktop/examples$ python3 main.py 1020
['main.py', '10', '20']
Sum = 30
স্ক্রিপ্ট এর সাথে অতিরিক্ত ভ্যালু পাঠাচ্ছি -এ গুলোকে বলে আর্গুমেন্ট। এখানে ইচ্ছা মতো আর্গুমেন্ট পাঠাতে পারি। তবে আমার কোডটি ( আর্গুমেন্ট ছাড়া ) ডাইরেক্ট রান করলে কিন্তু ইরর খাবেন , আপনার কাজ হচ্ছে কিভাবে ইরর মুক্ত একটি কোড লিখবেন এখানে , এবং ইচ্ছা মতন আর্গুমেন্ট দিয়ে সেগুলোর যোগফল বের করতে পারবো
Example-5:
আমরা চাইলে একটি মডিউল এর সবগুলো জিনিস এস্ট্রেরিক্স (*) চিহ্ন দিয়ে নিয়ে আসতে পারি
some_module.py
player1 = {
"name": "Mashrafee Bin Mortuza",
"age": 40,
"country": "Bangaldesh"
}
player2 = {
"name": "Shakib Al Hassan",
"age": 36,
"country": "Bangaldesh"
}
player3 = {
"name": "Musfiqur Rahim",
"age": 37,
"country": "Bangaldesh"
}
main.py
from some_module import *
print(player3)
# {'name': 'Musfiqur Rahim', 'age': 37, 'country': 'Bangaldesh'}
এসো নিজে করি
অনুশীলনঃ
১। my_module নামের একটি মডিউল কে কিভাবে ইমপোর্ট করা যায়?
২| নিজে নিজে ৫ টি মডিউল বানান এবং একটি স্ত্রিপ্ট এ সেগুলো ইউজ করেন।
৩। একটি মডিউল বানান , যেখানে একটি ফাংশন থাকবে – যেটি রেন্ডম পাসওয়ার্ড জেনারেট করবে। পাসওয়ার্ড এর দৈর্ঘ্য হবে ১০। এবারে , main.py নামে স্ক্রিপ্ট রান করে , রেন্ডম পাসওয়ার্ডটি আউটপুট এ দেখান
৪। ” circular import error ” কেন হয় , (একটু স্টাডি করুন এবং) উদাহরণ দিন
৫। কয়েকটি বিল্ট-ইন মডিউল এর নাম বলুন এবং তাদের ব্যবহার
ইন্টারভিউ প্রশ্নোত্তর
নমুনা ইন্টারভিও প্রশ্নঃ
১। পাইথন মডিউল এর ফাইল এক্সটেনশন কি হয়?
২। মডিউল নামকরণের কোন নিয়ম আছে?
৩| মডিউল ব্যাবহার করার উপকারিতা কি ?
৪| বিল্ট-ইন কয়েকটি মডিউল এর নাম বলেন ।
৫। একটি ভ্যারিয়েবল কে , কিভাবে একই প্রজেক্টের অনেকগুলি পাইথন স্ক্রিপ্ট এর মধ্যে রি-ডিক্লারেশন ছাড়া ওই ভ্যারিয়েবল কে ব্যবহার করবেন ?