# পাইথন মডিউল (Python module)

## Python module

আমরা যখন কোন একটা প্রজেক্ট এর কাজ করবো তখন আমাদের অনেক গুলো কোড লিখতে হবে প্রজেক্ট এর চাহিদা অনুযায়ী ।&#x20;

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

### Module Types

মডিউল ব্যাবহার করে কাজ করলে অনেক সুবিধা পাওয়া যায়। মডিউল কয়েক ধরনের হয় ।

১. বিল্ট ইন মডিউল

২.স্ট্যান্ডার্ড মডিউল

৩. থার্ড পার্টি মডিউল&#x20;

৪. কাস্টম মডিউল&#x20;

আরো থাকতে পারে আমি আপাতত এই কয়টা জানি

#### ১. বিল্ট ইন মডিউল:&#x20;

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

যেমন :

```python
print ("hello world")
```

#### ২.স্ট্যান্ডার্ড মডিউল :&#x20;

এইগুলোও পাইথন ইনস্টল করার সময় বিল্ট ইন ভাবে দেয়া থাকে কিন্তু প্রয়োজন অনুযায়ী এইগুলোকে ইমপোর্ট করতে হয়। যেমন আজকে কি বার এটা জানার জন্য পাইথন এ datetime নামে মডিউল টি ইমপোর্ট করে ব্যাবহার করতে হবে। যেমন:

```python
import datetime
```

#### ৩: থার্ড পার্টি মডিউল:&#x20;

অনেক প্রোগ্রামার নিজেদের তৈরি কিছু মডিউল পাইথন এর মডিউল ইনডেক্স করে রাখার ডিরেক্টরিতে আপলোড করে রাখে পরে যে কেউ ডাউনলোড করে টা ব্যাবহার করতে পারে।

ডাউনলোড এর পর নিচের মত ইমপোর্ট হবে।যেমন

```python
import numpy
```

#### ৪. কাস্টম মডিউল :&#x20;

আমরা নিজেদের জন্য যে মডিউল বানিয়ে ব্যাবহার করি সেটাই আমাদের কাস্টম মডিউল।

মনেকরি লগিন পেজ এর জন্য প্রয়োজনীয় ভ্যারিয়েবল ফাংশন একটি ফাইলে রাখলাম login.py নামে।আবার রেজিস্ট্রেশন পেজ এর জন্য প্রয়োজনীয় ফাংশন ও দরকারি কোড লিখে আরেকটি ফাইল বানালাম registration.py । আমরা আমাদের কাজের সুবিধার জন্য কোডকে বিভিন্ন ফাইলে রেখে যে কাজটি করছি এটাই মূলত পাইথন এর মডিউল। login.py ও registration.py ফাইল দুইটি এক একটি মডিউল।

**মডিউল কে ব্যাবহার করা :**&#x20;

মডিউল তো বানালাম এবার মডিউল কে তো আমাদের প্রোগ্রামে ব্যাবহার করতে হবে।মডিউল কে ব্যাবহার করার জন্য মডিউল কে ইমপোর্ট করতে হয়।মনেকরি আমাদের বর্তমান ডিরেক্টরিতে তে তিনটি ফাইল আছে main.py,login.py, registration.py । আমরা কাজ করছি main.py নামের ফাইল নিয়ে এখন login.py এর একটি ফাংশন আছে iflogin() নামে যার দ্বারা আমরা জানতে পারি আমাদের ইউজার লগিন আছে যা লগিন থাকলে True আর লগিন না থাকলে False return করে।আমরা চাচ্ছি ওই ফাংশনটি আমাদের main.py ফাইলে ব্যাবহার করতে তাহলে নিচের মত করে ইমপোর্ট করে ব্যাবহার করতে হবে।

```python
import login
print(login.iflogin())
আবার আমরা চাইলে registration.py ফাইলের কোন ফাংশন ও ব্যাবহার করতে পারি 
import registration
print (registration.register())
```

####

{% hint style="info" %}
Practical Example&#x20;
{% endhint %}

একটি ফোল্ডারের মধ্যে দুইটি ফাইল তৈরী করি : hello.py login.py

<figure><img src="https://266499525-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtiINvXcTIgpEyOdCjrwk%2Fuploads%2Fx0jtFu0Qv50U2WCQI9Ne%2Fimage.png?alt=media&#x26;token=dc707a6c-84a4-45dc-b9d5-cd704316502a" alt=""><figcaption></figcaption></figure>

#### login.py

```python
def iflogin(username, password):
#মনেকরি আমাদের ডেটাবেজে বা ম্যানুয়ালি   ইউজার এবং পাসওয়ার্ড স্টোর করা আছে নিচের মত 
    valid_username = "olee"
    valid_password = "12345"
    
#এবার আমরা ফাঙ্কশন থেকে প্রাপ্ত ভ্যালু চেক করবো 
    if username == valid_username and password == valid_password:
        return True
    else:
        return False
```

**hello.py**

```
import login

def main():
    username = input("Enter your username: ")
    password = input("Enter your password: ")

    if login.iflogin(username, password):
        print("Login successful!")
    else:
        print("Login failed. Invalid credentials.")
        
        
main()
```

এবার প্রোগ্রাম টি রান করি এবং ইউজার এবং পাসওয়ার্ড দিয়ে পরীক্ষা করি আমাদের ইম্পোর্ট করা ফাঙ্কশন কাজ করছে কিনা।

<figure><img src="https://266499525-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtiINvXcTIgpEyOdCjrwk%2Fuploads%2F1mnDC7K291yBPAb6DWvB%2Fimport%20module%20.gif?alt=media&#x26;token=15f37159-f1cb-4d5c-8a03-fab56ea5c848" alt=""><figcaption></figcaption></figure>

#### Rename Module

আমরা ইচ্ছা করলে মডিউলটি ইম্পোর্ট করার সময় মডিউলের একটি নাম দিতে পারি এবং ওই নাম ধরে মডিউলটির  ফাংশন বা ভ্যারিয়েবল এক্সেস নিতে পারি।

```python
import mymodule as olee
#olee হলো আমরা ইম্পোর্ট করার সময় মডিউল টি যে নাম দিয়েছি  
print(olee.country) #
olee.welcome('olee')
```

নিচের মত আউটপুট পাবো:

{% hint style="info" %}
Bangladesh

Hello Me. oleeWelcome To Our World
{% endhint %}

\
\
\ <br>

\ <br>

<br>
