# Python-এর সংস্করণ: Python 2 ও 3, 3.10–3.15-এ নতুন কী এবং কোনটি ইনস্টল করবেন

URL: https://skillaria.top/bn/guides/python/python-versions

সক্রিয় সংস্করণ হলো Python 3, সর্বশেষ স্থিতিশীল সংস্করণ — Python 3.15 (রিলিজ ৯ অক্টোবর ২০২৬); Python 2-এর সাপোর্ট ২০২০ সাল থেকে বন্ধ। নতুন সংস্করণ প্রতি অক্টোবরে বের হয় এবং প্রায় পাঁচ বছর সংশোধন পায়, তাই নতুন প্রজেক্টের জন্য সর্বশেষ 3.x ইনস্টল করুন; বর্তমান সংস্করণ জানতে চালান python3 --version।

বর্তমানে Python-এর সক্রিয় ধারা একটিই — Python 3। সর্বশেষ স্থিতিশীল সংস্করণ Python 3.15, যা ৯ অক্টোবর ২০২৬-এ প্রকাশিত হয়েছে; আর Python 2 আনুষ্ঠানিকভাবে ২০২০ সালেই জীবনচক্র শেষ করেছে। নিচে দেখব Python-এর সংস্করণগুলো কীভাবে আলাদা, 3.10–3.15-এ প্রতিটিতে কী যুক্ত হয়েছে, কোনটি ইনস্টল করা উচিত এবং আপনার কম্পিউটারে কোনটি আছে তা কীভাবে জানবেন।

## Python-এর সংস্করণ কীভাবে সাজানো

সংস্করণ নম্বর তিনটি সংখ্যায় গঠিত: `3.15.0`। প্রথমটি মেজর সংস্করণ (ভাষার ধারা), দ্বিতীয়টি মাইনর — এতে নতুন সুবিধা যুক্ত হয়, তৃতীয়টি প্যাচ নম্বর — এতে শুধু বাগ সংশোধন থাকে। «Python-এর সংস্করণ» বলতে সাধারণত মাইনর সংস্করণই বোঝানো হয়: 3.10, 3.11, 3.12 ইত্যাদি।

২০১৯ সাল থেকে বার্ষিক চক্র চালু আছে (PEP 602): প্রতি অক্টোবরে নতুন মাইনর সংস্করণ বের হয়। রিলিজের প্রায় ছয় মাস আগে আলফা, তারপর বিটা ও রিলিজ-প্রার্থী আসে, আর রিলিজের পরে আসে 3.15.1, 3.15.2 ধরনের সংশোধনী। এই সংশোধনীগুলোতে আপডেট নিরাপদ: প্যাচ সংস্করণে ভাষার আচরণ বদলায় না।

অনুসন্ধানে এখান থেকেই বিভ্রান্তি আসে: «python 311» এবং «python 3.11» একই জিনিস — সংস্করণ 3.11। নম্বরটি দশমিক ভগ্নাংশ নয়, তাই 3.10 নতুন 3.9-এর চেয়ে, আর 3.15 নতুন 3.2-এর চেয়ে।

## Python 2 ও Python 3: পার্থক্য কোথায়

Python 3 বের হয় ২০০৮ সালে এবং পুরনো কিছু সিদ্ধান্ত ঠিক করতে ইচ্ছাকৃতভাবে পেছনের সঙ্গে সামঞ্জস্য ভেঙেছিল। তাই Python 2-এর কোড প্রায়ই সম্পাদনা ছাড়া Python 3-এ চলে না। দ্বিতীয় ধারার শেষ সংস্করণ 2.7; এর সাপোর্ট শেষ হয় ১ জানুয়ারি ২০২০ তারিখে, আর চূড়ান্ত রিলিজ 2.7.18 বের হয় ২০২০ সালের এপ্রিলে।

| বিষয় | Python 2 | Python 3 |
| --- | --- | --- |

| প্রিন্ট | `print "hi"` — অপারেটর | `print("hi")` — ফাংশন |

| স্ট্রিং | ডিফল্টভাবে বাইট, Unicode — `u"..."` | `str` — সবসময় Unicode, বাইট — `bytes` |

| ভাগ | `7 / 2` দেয় 3 | `7 / 2` দেয় 3.5, পূর্ণসংখ্যা — `7 // 2` |

| ইনপুট | `raw_input()` | `input()` |

| রেঞ্জ | `range` তালিকা বানায়, `xrange` — লেজি | `range` লেজি |

| সাপোর্ট | ২০২০ থেকে নেই | প্রতি বছর নতুন সংস্করণ |

কোনো টিউটোরিয়াল বা উত্তরে যদি `print` বন্ধনী ছাড়া লেখা থাকে, সেটি Python 2 — উপাদানটি পুরনো। দ্বিতীয় ধারা এখন শেখার প্রয়োজন নেই: নতুন সিস্টেমে এটি ইনস্টল হয় না, লাইব্রেরিগুলো বহু আগে এর সাপোর্ট ছেড়েছে, আর পুরনো কোড স্থানান্তরের জন্য ছাড়া এর জ্ঞান কাজে লাগে না।

## Python 3.10–3.15-এ নতুন কী

নিচে প্রতিটি সংস্করণের মূল বিষয়গুলো দেওয়া হলো — যা প্রতিদিনের কোড বদলে দেয়। সম্পূর্ণ পরিবর্তনের তালিকা আছে অফিশিয়াল ডকুমেন্টেশনের What's New বিভাগে।

### Python 3.10 (অক্টোবর 2021)

- প্যাটার্ন ম্যাচিং `match`/`case` (PEP 634) — `if`/`elif`-এর শৃঙ্খলের বদলে ডেটা কাঠামো বিশ্লেষণ।
- উল্লম্ব দণ্ড দিয়ে টাইপের সংযোগ: `Optional[int]`-এর বদলে `int | None` (PEP 604)।
- একই `with`-এ বন্ধনীতে একাধিক কনটেক্সট ম্যানেজার।
- সিনট্যাক্স ত্রুটির বার্তা আরও স্পষ্ট।

```
def describe(point):
    match point:
        case (0, 0):
            return "মূলবিন্দু"
        case (x, 0):
            return f"X অক্ষে: {x}"
        case _:
            return "অন্য কোথাও"

print(describe((3, 0)))  # X অক্ষে: 3
```

### Python 3.11 (অক্টোবর 2022)

- গতি: Faster CPython প্রকল্প ইন্টারপ্রেটারকে গড়ে প্রায় এক-চতুর্থাংশ দ্রুত করেছে, কিছু কাজে আরও বেশি।
- নির্ভুল ট্রেসব্যাক নির্দেশক: `^^^^` চিহ্ন দেখায় লাইনের কোন অংশে ত্রুটি হয়েছে (PEP 657)।
- এক্সেপশন গ্রুপ ও `except*` (PEP 654), `add_note()` দিয়ে এক্সেপশনে নোট যোগ।
- TOML পড়ার জন্য `tomllib` মডিউল — যেমন `pyproject.toml`।

### Python 3.12 (অক্টোবর 2023)

- জেনেরিকের নতুন সিনট্যাক্স: `def first[T](items: list[T]) -> T` এবং টাইপ এলিয়াসের জন্য `type` কীওয়ার্ড (PEP 695)।
- f-স্ট্রিং এখন পূর্ণাঙ্গ ব্যাকরণ (PEP 701): ভেতরে একই উদ্ধৃতি চিহ্ন, লাইনভাঙন ও মন্তব্য ব্যবহার করা যায়।
- স্ট্যান্ডার্ড লাইব্রেরি থেকে পুরনো `distutils` সরানো হয়েছে।
- ত্রুটির বার্তায় আরও বিস্তারিত পরামর্শ, যেমন «মডিউলটি ইমপোর্ট করতে ভুলে গেছেন?»।

```
type Pair = tuple[int, int]

def first[T](items: list[T]) -> T:
    return items[0]

songs = ["a", "b"]
print(f"প্রথম: {first(songs)!r}, মোট {len(songs)}")
print(f"{"ভেতরের উদ্ধৃতি"}")  # 3.12 থেকে কাজ করে
```

«f-স্ট্রিং কোন সংস্করণ থেকে» — এই প্রশ্নের উত্তর: f-স্ট্রিং নিজেই এসেছে Python 3.6-এ, আর কোঁকড়া বন্ধনীর ভেতরে একই উদ্ধৃতি ও লাইনভাঙনের স্বাধীনতা যোগ করেছে 3.12।

### Python 3.13 (অক্টোবর 2024)

- নতুন ইন্টারঅ্যাকটিভ কনসোল: রং, বহুলাইন সম্পাদনা, ইতিহাস, এবং বন্ধনী ছাড়া `exit` ও `help` কমান্ড।
- পরীক্ষামূলক GIL-মুক্ত বিল্ড (free-threaded, PEP 703) এবং পরীক্ষামূলক JIT-কম্পাইলার (PEP 744)।
- অপ্রয়োজনীয় পুরনো মডিউল সরানো হয়েছে, যেমন `cgi` ও `telnetlib` (PEP 594)।
- নতুন সংস্করণগুলোর বাগ সংশোধনের সময়সীমা বাড়ানো হয়েছে দুই বছর পর্যন্ত।

### Python 3.14 (অক্টোবর 2025)

- টেমপ্লেট স্ট্রিং, t-স্ট্রিং: `t"হ্যালো, {name}"` তৈরি স্ট্রিং না দিয়ে একটি টেমপ্লেট অবজেক্ট দেয়, যা নিরাপদে প্রক্রিয়া করা যায় (PEP 750)।
- অ্যানোটেশনের বিলম্বিত মূল্যায়ন (PEP 649) — ফাইলে পরে ঘোষিত টাইপ নিয়ে কম সমস্যা।
- GIL-মুক্ত বিল্ড পরীক্ষামূলক অবস্থা থেকে বের হয়ে অফিশিয়াল সাপোর্ট পেয়েছে।
- মডিউল `compression.zstd`, কনসোলে সিনট্যাক্স হাইলাইটিং, এবং বন্ধনী ছাড়া `except A, B:`।

### Python 3.15 (৯ অক্টোবর 2026)

- লেজি ইমপোর্ট `lazy import` (PEP 810): মডিউল শুরুতে নয়, প্রথম ব্যবহারের সময় লোড হয়। কোর্সের মাপে `lazy import pandas` সহ স্ক্রিপ্ট শুরু হয়েছে 280 মিলিসেকেন্ডের বদলে 14 মিলিসেকেন্ডে।
- বিল্ট-ইন অপরিবর্তনীয় ডিকশনারি `frozendict` (PEP 814)।
- লিস্ট কমপ্রিহেনশনে আনপ্যাকিং: `[*g for g in groups]` (PEP 798)।
- স্ট্যান্ডার্ড লাইব্রেরিতে স্যাম্পলিং প্রোফাইলার Tachyon (PEP 799)।
- ফাইল নিয়ে কাজে ডিফল্টভাবে UTF-8 (PEP 686) — Windows-এর এনকোডিং-সমস্যার অবসান।
- ত্রুটির বার্তায় নতুন «Did you mean» পরামর্শ।

```
lazy import json                    # PEP 810
cfg = frozendict(limit=500)         # PEP 814
flat = [*g for g in [[1, 2], [3]]]  # PEP 798 -> [1, 2, 3]
print(flat, cfg["limit"])
# python -m profiling.sampling run app.py   # PEP 799, Tachyon
```

এই কোড শুধু 3.15-এ চলবে: পুরনো সংস্করণে `lazy import` ও কমপ্রিহেনশনে আনপ্যাকিং `SyntaxError` দেবে, আর `frozendict` — `NameError`।

## Python সংস্করণের সাপোর্ট কতদিন চলে

প্রতিটি সংস্করণ প্রায় পাঁচ বছর বাঁচে। প্রথমে এটি সাধারণ বাগ সংশোধন ও নিয়মিত প্যাচ পায় (3.13 থেকে — দুই বছর), তারপর সময়সীমার শেষ পর্যন্ত শুধু নিরাপত্তা সংশোধন। এরপর সংস্করণটি end-of-life: এতে থাকা দুর্বলতা আর কেউ বন্ধ করে না।

| সংস্করণ | রিলিজ | সাপোর্ট শেষ | অক্টোবর 2026-এ অবস্থা |
| --- | --- | --- | --- |

| 2.7 | 2010 | জানুয়ারি 2020 | সাপোর্ট নেই |

| 3.9 | অক্টোবর 2020 | অক্টোবর 2025 | সাপোর্ট নেই |

| 3.10 | অক্টোবর 2021 | অক্টোবর 2026 | সাপোর্ট শেষ হচ্ছে |

| 3.11 | অক্টোবর 2022 | অক্টোবর 2027 | শুধু নিরাপত্তা |

| 3.12 | অক্টোবর 2023 | অক্টোবর 2028 | শুধু নিরাপত্তা |

| 3.13 | অক্টোবর 2024 | অক্টোবর 2029 | বাগ সংশোধন |

| 3.14 | অক্টোবর 2025 | অক্টোবর 2030 | বাগ সংশোধন |

| 3.15 | অক্টোবর 2026 | অক্টোবর 2031 | সর্বশেষ |

প্রতিটি শাখার বর্তমান অবস্থা Python Developer's Guide-এর Status of Python versions পাতায় প্রকাশিত হয়। দীর্ঘমেয়াদি প্রজেক্টের জন্য সংস্করণ বাছার আগে সেখানে একবার দেখে নেওয়া উচিত।

## কোন Python সংস্করণ ইনস্টল করবেন

শেখা ও নতুন প্রজেক্টের জন্য সর্বশেষ স্থিতিশীল সংস্করণ নিন — এখন তা Python 3.15। «আমি প্রমাণিত 3.10 নেব» — এই যুক্তি কাজ করে না: অক্টোবর 2026-এ এটি নিরাপত্তা সংশোধনও আর পাবে না, আর যে সংস্করণ বিদায় নিচ্ছে তার উপর শিখলে পরে নতুন করে শিখতে হবে। Python 3-এর ভেতরে সামঞ্জস্য ভালো: পুরনো সংস্করণের কোড প্রায় সবসময় নতুনে চলে, উল্টোটা নয়।

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

| পরিস্থিতি | কী ইনস্টল করবেন |
| --- | --- |

| শূন্য থেকে শিখছেন | সর্বশেষ স্থিতিশীল (3.15) |

| নতুন প্রজেক্ট | সর্বশেষ বা তার আগেরটি |

| লাইব্রেরি নতুনটি সাপোর্ট করে না | আগের মাইনর সংস্করণ |

| পুরনো প্রজেক্ট 3.10 বা তার নিচে | সাপোর্টেড সংস্করণে যাওয়ার পরিকল্পনা |

| Python 2-এর কোড | Python 3-এ স্থানান্তর |

## কম্পিউটারে Python-এর সংস্করণ কীভাবে জানবেন

টার্মিনালে একটি কমান্ডই যথেষ্ট। macOS ও Linux-এ সাধারণত `python3` ব্যবহৃত হয়, Windows-এ — `python` বা লঞ্চার `py`।

```
$ python3 --version
Python 3.12.3        # পুরনো সংস্করণ — আপডেটের সময় হয়েছে

$ python3 -V
Python 3.15.0
```

Windows-এর লঞ্চার একসঙ্গে সব ইনস্টল করা সংস্করণ দেখায়, আর uv দেখায় যেগুলো সে দেখতে পায় এবং ইনস্টল করতে পারে:

```
py --list
uv python list
```

প্রোগ্রামের ভেতর থেকে সংস্করণ দেয় `sys` মডিউল। `sys.version_info` টাপলটি তুলনা করা সুবিধাজনক, যাতে স্ক্রিপ্ট নিজেই যাচাই করতে পারে ইন্টারপ্রেটার উপযুক্ত কিনা:

```
import sys

print(sys.version)            # তারিখসহ পূর্ণ সংস্করণ লাইন
print(sys.version_info[:3])   # যেমন (3, 15, 0)

if sys.version_info < (3, 10):
    raise SystemExit("Python 3.10 বা নতুন প্রয়োজন")
```

যদি `python3 --version` আপনার ইনস্টল করা সংস্করণ না দেখায়, তবে PATH-এ অন্য একটি ইন্টারপ্রেটার আগে পাওয়া যাচ্ছে। কোনটি, তা দেখতে macOS ও Linux-এ `which python3`, Windows-এ `where python` চালান।

## এক কম্পিউটারে একাধিক সংস্করণ

পাশাপাশি 3.13 ও 3.15 রাখা স্বাভাবিক: প্রতিটি নিজের ফোল্ডারে ইনস্টল হয়। এগুলো সবচেয়ে সুবিধাজনকভাবে uv দিয়ে চালানো যায়: `uv python install 3.15` সংস্করণটি ডাউনলোড করে, আর `uv python pin 3.15` সেটি `.python-version` ফাইলে প্রজেক্টের সঙ্গে বেঁধে দেয়। Linux-এর সিস্টেম Python হাতে না বদলানোই ভালো — তার উপর ওএসের নিজস্ব ইউটিলিটি চলে।

প্রজেক্টের ন্যূনতম সংস্করণ লেখা হয় `pyproject.toml`-এ, `requires-python` ক্ষেত্রে। তখন প্যাকেজ ইনস্টলার অনুপযুক্ত ইন্টারপ্রেটারে প্রজেক্ট বসাতে দেবে না।

```
[project]
name = "expenses"
version = "0.1.0"
requires-python = ">=3.15"
```

## সারসংক্ষেপ

Python-এর সক্রিয় সংস্করণ হলো 3-এর ধারা, তার মধ্যে সর্বশেষটি 3.15 — লেজি ইমপোর্ট, `frozendict` ও ডিফল্ট UTF-8 নিয়ে। Python 2 ২০২০ সালে শেষ হয়েছে, 3.10 অক্টোবর 2026-এ সাপোর্ট হারাচ্ছে, তাই শেখা ও নতুন প্রজেক্ট শুরু করা উচিত তাজা সংস্করণে। নিজেরটি জানতে চালান `python3 --version`। কোর্সের প্রতিটি বিষয়ের শেষে «3.10–3.15-এ নতুন কী» ব্লক আছে, তাই সংস্করণের পরিবর্তনগুলো হাতে-কলমে দেখানো হয়।

## FAQ

**মেনু স্টার্টে «IDLE Python 3.10 64-bit» লেখা থাকলে সেটি কী?**

এটি Python-এর সাথে আসা সহজ ডেভেলপমেন্ট পরিবেশ IDLE, যা python.org-এর ইনস্টলার বসায়; নামে ইন্টারপ্রেটারের সংস্করণ ও বিট-সংখ্যা লেখা থাকে। সেখানে যদি 3.10 লেখা থাকে, তবে আপনার সংস্করণের সাপোর্ট শেষ হতে চলেছে — নতুন একটি ইনস্টল করা ভালো।

**Python 3.12 থেকে 3.15-এ কি ওপরে আপডেট করা যায়?**

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

**64-bit ও 32-bit সংস্করণের পার্থক্য কী?**

64-bit সংস্করণ বেশি মেমরি ব্যবহার করতে পারে এবং সব আধুনিক কম্পিউটারে উপযুক্ত; 32-bit শুধু খুব পুরনো সিস্টেমের জন্য নেওয়া হয়।

**আলফা ও বিটা সংস্করণ কেন থাকে?**

এগুলো পরবর্তী সংস্করণের প্রাথমিক বিল্ড, যা লাইব্রেরি ও প্রজেক্ট পরীক্ষার জন্য দেওয়া হয়; শেখা ও কাজের জন্য শুধু চূড়ান্ত রিলিজ নিন।


---
Source: Skillaria.Top (https://skillaria.top)
