Python চিট শিট: সিনট্যাক্স, কমান্ড ও বিল্ট-ইন ফাংশন টেবিলে
Python-এর সিনট্যাক্স ব্লক বোঝায় ব্র্যাকেটের বদলে ইনডেন্টেশন দিয়ে: কোলনের পরের ব্লক চার স্পেসে সরে। মূল বিষয়গুলো হলো টাইপ ঘোষণা ছাড়া ভেরিয়েবল, if/elif/else শর্ত, for ও while লুপ, def দিয়ে ফাংশন, এবং বিল্ট-ইন ফাংশন print, len, range, input, type সহ স্ট্রিং, লিস্ট ও ডিকশনারির মেথড।
এই চিট শিটে Python-এর প্রথম কয়েক মাসে হাতের কাছে রাখার মতো সব কিছু এক পাতায় জড়ো করা হয়েছে: সিনট্যাক্স, লুপ, বিল্ট-ইন ফাংশন, স্ট্রিং, লিস্ট ও ডিকশনারির মেথড এবং টার্মিনাল কমান্ড। প্রতিটি টেবিল একটি ছোট রেফারেন্স, যার উদাহরণ সরাসরি REPL-এ বসিয়ে চালানো যায়।
Python সিনট্যাক্সের মূল বিষয়
ভাষার প্রধান বৈশিষ্ট্য — ব্লক লেখা হয় ব্র্যাকেটে নয়, ইনডেন্টেশনে। কোলনযুক্ত লাইনের পরের (if, for, def, class) লাইনগুলো চার স্পেসে সরানো হয়। ট্যাব ও স্পেস মেশানো যায় না — পাবেন IndentationError।
| গঠন | উদাহরণ | ব্যাখ্যা |
|---|---|---|
| মন্তব্য | # text | # থেকে লাইনের শেষ পর্যন্ত সব উপেক্ষিত |
| ভেরিয়েবল | age = 25 | টাইপ ঘোষণা হয় না, মান থেকে নির্ধারিত হয় |
| একসঙ্গে অ্যাসাইনমেন্ট | a, b = 1, 2 | আনপ্যাকিং; মান বদল: a, b = b, a |
| আউটপুট | print("Hello", name) | আর্গুমেন্টগুলো স্পেস দিয়ে আলাদা হয় |
| ইনপুট | s = input("Name: ") | সবসময় স্ট্রিং ফেরত দেয় |
| f-স্ট্রিং | f"{name}: {price:.2f}" | এক্সপ্রেশন বসানো ও ফরম্যাট |
| টাইপ অ্যানোটেশন | count: int = 0 | IDE ও যাচাই টুলের জন্য ইঙ্গিত, চলার সময় যাচাই হয় না |
| খালি ব্লক | pass | সিনট্যাক্সে ব্লক লাগলে প্লেসহোল্ডার |
| ইমপোর্ট | from math import sqrt | মডিউল বা তার ভেতর থেকে নাম যুক্ত করা |
ডেটা টাইপ
| টাইপ | লিটারাল | পরিবর্তনযোগ্য |
|---|---|---|
int | 42, 1_000_000 | না |
float | 3.14, 1e-3 | না |
bool | True, False | না |
str | "text", 'text', """many lines""" | না |
list | [1, 2, 3] | হ্যাঁ |
tuple | (1, 2), (1,) | না |
dict | {"a": 1} | হ্যাঁ |
set | {1, 2}, খালি — set() | হ্যাঁ |
NoneType | None | — |
অপারেটর
| দল | অপারেটর | উদাহরণ → ফল |
|---|---|---|
| গণিত | + - * / // % ** | 7 // 2 → 3, 7 % 2 → 1, 2 ** 10 → 1024 |
| তুলনা | == != < > <= >= | 1 < x < 10 — তুলনার শৃঙ্খল |
| যুক্তি | and or not | x or "ডিফল্ট" |
| অন্তর্ভুক্তি | in, not in | "a" in "abc" → True |
| অভিন্নতা | is, is not | x is None |
| অ্যাসাইনমেন্ট | += -= *= /=, := | if (n := len(s)) > 10: ... |
শর্ত ও প্যাটার্ন মিলানো
if score >= 90:
grade = "A"
elif score >= 70:
grade = "B"
else:
grade = "C"
status = "adult" if age >= 18 else "child" # শর্তসাপেক্ষ এক্সপ্রেশন
match command:
case "start":
print("Starting")
case "stop" | "exit":
print("Stopping")
case _:
print("Unknown command")
মিথ্যা হিসেবে গণ্য হয় False, None, 0, খালি স্ট্রিং ও খালি সংগ্রহ। তাই if len(items) > 0-এর বদলে সাধারণত লেখা হয় শুধু if items।
Python-এ লুপ: for ও while সিনট্যাক্স
for লুপ
Python-এ for লুপের সিনট্যাক্স: for ভেরিয়েবল in ক্রম: এবং ইনডেন্ট করা ব্লক। লুপ যেকোনো iterable-এর উপর চলে — স্ট্রিং, লিস্ট, ডিকশনারি, ফাইল, range।
for i in range(5): # 0 1 2 3 4
print(i)
for i in range(10, 0, -2): # 10 8 6 4 2
print(i)
for i, fruit in enumerate(["apple", "pear"], start=1):
print(i, fruit)
for name, score in zip(names, scores):
print(name, score)
for key, value in prices.items():
print(key, value)
while লুপ
attempts = 3
while attempts > 0:
password = input("Password: ")
if password == "secret":
print("Logged in")
break
attempts -= 1
else:
print("No attempts left") # চলে যদি break না হয়
| কমান্ড | কী করে |
|---|---|
break | লুপ থেকে আগেভাগে বের হয় |
continue | পরের ধাপে চলে যায় |
লুপের else | লুপ break ছাড়া শেষ হলে চলে |
range(stop), range(start, stop, step) | সংখ্যার ক্রম, stop অন্তর্ভুক্ত নয় |
কমপ্রিহেনশন (comprehensions)
squares = [x ** 2 for x in range(10)]
evens = [x for x in numbers if x % 2 == 0]
lengths = {word: len(word) for word in words}
unique = {c.lower() for c in text}
total = sum(x * x for x in range(100)) # জেনারেটর এক্সপ্রেশন
ফাংশন
def greet(name: str, greeting: str = "Hello") -> str:
"""Returns a greeting."""
return f"{greeting}, {name}!"
def total(*args, **kwargs):
return sum(args), kwargs
square = lambda x: x * x
print(greet("Anna")) # Hello, Anna!
print(greet("Anna", greeting="Hi")) # Hi, Anna!
| উপাদান | অর্থ |
|---|---|
def f(a, b=1) | ডিফল্ট মানসহ প্যারামিটার |
*args | যেকোনো সংখ্যক পজিশনাল আর্গুমেন্ট (টাপল) |
**kwargs | যেকোনো সংখ্যক নামযুক্ত আর্গুমেন্ট (ডিকশনারি) |
return | মান ফেরত; না থাকলে ফাংশন None দেয় |
lambda x: ... | এক এক্সপ্রেশনের ছোট নামহীন ফাংশন |
global, nonlocal | বাইরের স্কোপের ভেরিয়েবল বদলানো |
পরিবর্তনযোগ্য ডিফল্ট মান ব্যবহার করবেন না, যেমন def f(items=[]): লিস্টটি একবারই তৈরি হয় এবং কলের মধ্যে জমতে থাকে। সঠিক উপায় — items=None এবং ভেতরে if items is None: items = []।
Python-এর বিল্ট-ইন ফাংশন
বিল্ট-ইন ফাংশন ইমপোর্ট ছাড়াই পাওয়া যায়। প্রায় প্রতিটি স্ক্রিপ্টে এগুলোর কোনো না কোনোটি থাকে।
| ফাংশন | কী করে | উদাহরণ → ফল |
|---|---|---|
print() | মান প্রদর্শন করে | print(1, 2, sep="-") → 1-2 |
input() | কিবোর্ড থেকে স্ট্রিং পড়ে | int(input()) |
len() | সংগ্রহ বা স্ট্রিংয়ের দৈর্ঘ্য | len("abc") → 3 |
type() | অবজেক্টের টাইপ | type(3.0) → <class 'float'> |
isinstance() | টাইপ যাচাই | isinstance(5, int) → True |
int() float() str() bool() | টাইপ রূপান্তর | int("42") → 42 |
list() tuple() set() dict() | সংগ্রহ তৈরি | list("ab") → ['a', 'b'] |
range() | সংখ্যার পরিসর | list(range(3)) → [0, 1, 2] |
enumerate() | (ইনডেক্স, উপাদান) জোড়া | list(enumerate("ab")) → [(0, 'a'), (1, 'b')] |
zip() | ক্রমগুলো জোড়ায় জোড়ায় মেলায় | list(zip([1, 2], "ab")) → [(1, 'a'), (2, 'b')] |
sum() min() max() | যোগফল, সর্বনিম্ন, সর্বোচ্চ | max([3, 7, 1]) → 7 |
abs() round() | মডিউল ও গোলকরণ | round(3.14159, 2) → 3.14 |
sorted() | নতুন সাজানো লিস্ট | sorted(words, key=len, reverse=True) |
reversed() | উল্টো ক্রমের ইটারেটর | list(reversed([1, 2])) → [2, 1] |
map() filter() | ফাংশন প্রয়োগ / ছাঁকনি | list(map(str, [1, 2])) → ['1', '2'] |
any() all() | অন্তত একটি / সবগুলো সত্য | all(x > 0 for x in nums) |
open() | ফাইল খোলে | open("a.txt", encoding="utf-8") |
help() dir() | সাহায্য ও অ্যাট্রিবিউটের তালিকা | help(str.split), dir(list) |
id() hash() | অবজেক্টের আইডি ও হ্যাশ | hash("a") |
সবচেয়ে সুবিধাজনক রেফারেন্স সবসময় হাতের কাছে — REPL-এর help(): help(dict) ডিকশনারির সব মেথড বর্ণনাসহ দেখায়, আর dir(obj) দেয় উপলব্ধ নামের তালিকা।
স্ট্রিং মেথড
Python-এর স্ট্রিং সিনট্যাক্স: স্ট্রিং অপরিবর্তনীয়, প্রতিটি মেথড নতুন স্ট্রিং ফেরত দেয়। স্লাইস কাজ করে লিস্টের মতো: s[1:4], s[::-1] — উল্টে দেওয়া।
| মেথড | উদাহরণ → ফল |
|---|---|
upper() lower() | "Py".upper() → 'PY' |
capitalize() title() | "hello world".title() → 'Hello World' |
strip() lstrip() rstrip() | " hi \n".strip() → 'hi' |
split(sep) | "a,b,c".split(",") → ['a', 'b', 'c'] |
join(iterable) | "-".join(["a", "b"]) → 'a-b' |
replace(old, new) | "cat".replace("c", "b") → 'bat' |
find() index() | "hello".find("l") → 2; না পেলে -1 (index-এ ত্রুটি) |
count() | "banana".count("a") → 3 |
startswith() | "file.py".endswith(".py") → True |
isdigit() isalpha() isspace() | "123".isdigit() → True |
removeprefix() removesuffix() | "test_a".removeprefix("test_") → 'a' |
zfill() center() ljust() | "7".zfill(3) → '007' |
format() | "{} + {}".format(1, 2) → '1 + 2' |
Python লিস্টের কমান্ড
লিস্ট পরিবর্তনযোগ্য ক্রমবদ্ধ সংগ্রহ। বেশির ভাগ মেথড লিস্ট জায়গায় বদলায় এবং None ফেরত দেয়, তাই a = a.sort() একটি সাধারণ ভুল।
| অপারেশন | কী করে | উদাহরণ |
|---|---|---|
append(x) | শেষে যোগ করে | a.append(4) |
extend(iter) | সব উপাদান যোগ করে | a.extend([5, 6]) |
insert(i, x) | ইনডেক্স ধরে বসায় | a.insert(0, "first") |
remove(x) | মানের প্রথম উপস্থিতি মুছে | a.remove(3) |
pop(i) | উপাদান মুছে ফেরত দেয় (ডিফল্ট — শেষটি) | last = a.pop() |
clear() | লিস্ট খালি করে | a.clear() |
index(x) | প্রথম উপস্থিতির ইনডেক্স | a.index("b") |
count(x) | কতবার আছে | a.count(1) |
sort() | জায়গায় সাজায় | a.sort(key=str.lower) |
reverse() | জায়গায় উল্টে দেয় | a.reverse() |
copy() | অগভীর কপি | b = a.copy() |
del a[i] | ইনডেক্স বা স্লাইস মুছে | del a[1:3] |
| স্লাইস | a[start:stop:step] | a[-1] — শেষটি, a[:3] — প্রথম তিনটি |
Python ডিকশনারির কমান্ড
| অপারেশন | কী করে | উদাহরণ |
|---|---|---|
d[key] | কী-এর মান; কী না থাকলে KeyError | d["name"] |
get(key, default) | মান বা বিকল্প | d.get("age", 0) |
d[key] = value | যোগ বা বদল | d["city"] = "Dhaka" |
keys() values() items() | কী, মান, জোড়া | for k, v in d.items(): |
update() | অন্য ডিকশনারির সঙ্গে মেশায় | d.update({"a": 1}) |
d1 | d2 | নতুন যুক্ত ডিকশনারি | merged = defaults | user |
pop(key, default) | মুছে মান ফেরত | d.pop("tmp", None) |
popitem() | সবশেষে যোগ হওয়া জোড়া মুছে | d.popitem() |
setdefault(key, value) | মান ফেরত; কী না থাকলে তৈরি করে | d.setdefault("tags", []).append("py") |
key in d | কী আছে কিনা যাচাই | if "name" in d: |
dict.fromkeys() | একই মানসহ কী-এর ডিকশনারি | dict.fromkeys("abc", 0) |
len(d), del d[key] | আকার ও মুছে ফেলা | del d["old"] |
টাপল ও সেট
| অপারেশন | উদাহরণ → ফল |
|---|---|
| টাপল আনপ্যাকিং | x, y = (3, 4) |
| সেটে যোগ | s.add(5), মুছতে — s.discard(5) |
| মিলন / ছেদ | {1, 2} | {2, 3} → {1, 2, 3}; {1, 2} & {2, 3} → {2} |
| বিয়োগ | {1, 2} - {2} → {1} |
| লিস্ট থেকে ডুপ্লিকেট সরানো | list(dict.fromkeys(items)) — ক্রম ঠিক রেখে |
এক্সেপশন ও ফাইল
try:
number = int(input("Number: "))
except ValueError as err:
print("This is not a number:", err)
else:
print("Success")
finally:
print("Always runs")
with open("data.txt", "w", encoding="utf-8") as f:
f.write("line\n")
with open("data.txt", encoding="utf-8") as f:
for line in f:
print(line.rstrip())
| এক্সেপশন | কখন ঘটে |
|---|---|
SyntaxError, IndentationError | সিনট্যাক্স বা ইনডেন্টেশনে ভুল |
NameError | নাম সংজ্ঞায়িত নয় (বানান ভুল) |
TypeError | অনুপযুক্ত টাইপের অপারেশন: "1" + 1 |
ValueError | টাইপ ঠিক, কিন্তু মান ভুল: int("abc") |
IndexError, KeyError | ইনডেক্স বা কী নেই |
FileNotFoundError | ফাইল পাওয়া যায়নি |
ZeroDivisionError | শূন্য দিয়ে ভাগ |
ক্লাস
from dataclasses import dataclass
class Dog:
def __init__(self, name: str):
self.name = name
def bark(self) -> str:
return f"{self.name}: Woof!"
@dataclass
class Point:
x: float
y: float
print(Dog("Bolt").bark()) # Bolt: Woof!
print(Point(1, 2)) # Point(x=1, y=2)
Python-এর বিল্ট-ইন মডিউল
স্ট্যান্ডার্ড লাইব্রেরি ইন্টারপ্রেটারের সঙ্গেই আসে — শুধু import লাগে।
| মডিউল | কাজ | উদাহরণ |
|---|---|---|
math | গণিত | math.sqrt(16) → 4.0 |
random | এলোমেলো সংখ্যা | random.randint(1, 6), random.choice(items) |
datetime | তারিখ ও সময় | datetime.date.today() |
pathlib | পথ ও ফাইল | Path("data").glob("*.csv") |
os, sys | সিস্টেম, এনভায়রনমেন্ট ভেরিয়েবল, আর্গুমেন্ট | os.environ.get("HOME"), sys.argv |
json | JSON পড়া ও লেখা | json.loads(text), json.dumps(obj, ensure_ascii=False) |
csv | CSV টেবিল | csv.DictReader(f) |
collections | Counter, defaultdict, deque | Counter("banana").most_common(1) → [('a', 3)] |
itertools | ইটারেটরের সংমিশ্রণ ও শৃঙ্খল | itertools.chain(a, b) |
re | রেগুলার এক্সপ্রেশন | re.findall(r"\d+", s) |
time | বিরতি ও সময় মাপা | time.sleep(1), time.perf_counter() |
asyncio | অ্যাসিনক্রোনাস কোড | asyncio.run(main()) |
Python 3.15-এ এসেছে লেজি ইমপোর্ট (PEP 810): lazy import pandas as pd মডিউল লোড স্থগিত রাখে প্রথম ব্যবহার পর্যন্ত, তাই ভারী নির্ভরতাসহ স্ক্রিপ্ট অনেক দ্রুত শুরু হয়।
টার্মিনালে Python-এর কমান্ড
«Python কমান্ড» বলতে বোঝানো হয় ইন্টারপ্রেটার চালানো ও লাইব্রেরি ইনস্টলের কমান্ড। Windows-এ python3-এর বদলে সাধারণত লেখা হয় python বা py।
| কমান্ড | কী করে |
|---|---|
python3 --version | সংস্করণ দেখায় |
python3 | ইন্টারঅ্যাকটিভ কনসোল REPL খোলে (বেরোনো — exit()) |
python3 script.py | ফাইল চালায় |
python3 -c "print(2 + 2)" | এক লাইনের কোড চালায় |
python3 -m venv .venv | ভার্চুয়াল এনভায়রনমেন্ট বানায় |
source .venv/bin/activate / .venv\Scripts\activate | এনভায়রনমেন্ট সক্রিয় করে (Linux, macOS / Windows) |
python3 -m pip install requests | প্যাকেজ ইনস্টল করে |
pip list, pip freeze > requirements.txt | প্যাকেজের তালিকা ও সংরক্ষণ |
pip install -r requirements.txt | ফাইল থেকে নির্ভরতা ইনস্টল |
python3 -m http.server 8000 | বর্তমান ফোল্ডারে সহজ ওয়েব সার্ভার |
uv init, uv add requests, uv run main.py | uv ম্যানেজারে প্রজেক্ট, নির্ভরতা ও চালানো |
নতুনদের সাধারণ ভুল
- তুলনায়
=— শর্তে লাগে==; একক=হলো অ্যাসাইনমেন্ট। - কোলন ভুলে যাওয়া
if,for,def-এর পরSyntaxErrorদেয়। - স্ট্রিং ও সংখ্যা যোগ:
"Age: " + 25ত্রুটি, লিখুনf"Age: {25}"। - লুপের সময় লিস্ট বদলানো — কপি উপর দিয়ে চলুন
for x in a[:]বা নতুন লিস্ট তৈরি করুন। input()স্ট্রিং দেয় — হিসাবের জন্যint()বাfloat()-এ মুড়ুন।
সারসংক্ষেপ
Python-এর সিনট্যাক্স দাঁড়িয়ে আছে ইনডেন্টেশন, কোলন ও অল্প কিছু কাঠামোর উপর: শর্ত, for ও while লুপ, ফাংশন, ক্লাস। এর সঙ্গে যোগ করুন কয়েক ডজন বিল্ট-ইন ফাংশন এবং স্ট্রিং, লিস্ট ও ডিকশনারির মেথড — তাহলে দৈনন্দিন কাজের বড় অংশ সামলানো যাবে। চিট শিটটি সংরক্ষণ করুন, আর টেবিলগুলো পরিচিত হয়ে গেলে মডিউল ও অ্যাসিনক্রোনাসের দিকে যান; এগুলো «Python 3.15: নতুন থেকে পেশাদার» কোর্সে ধাপে ধাপে হাতে-কলমে শেখানো হয়।
সাধারণ প্রশ্ন
Python-এ ইনডেন্টেশনের জন্য কয়টি স্পেস দিতে হয়?
PEP 8 অনুযায়ী প্রতি স্তরে ৪টি স্পেস। মূল কথা — পুরো ব্লকে একই রকম হওয়া এবং ট্যাবের সঙ্গে না মেশানো।
লিস্ট ও টাপলের পার্থক্য কী?
লিস্ট পরিবর্তনযোগ্য, তাতে যোগ ও সাজানো যায় জায়গায়; টাপল অপরিবর্তনীয়, তাই ডিকশনারির কী হিসেবে এবং স্থির মানের সেটের জন্য উপযুক্ত।
Python-এ একটি অবজেক্টের সব মেথড কীভাবে দেখব?
নামের তালিকার জন্য <code>dir(obj)</code>, বর্ণনার জন্য <code>help(obj)</code> ডাকুন — যেমন <code>help(str)</code> স্ট্রিংয়ের সব মেথড দেখাবে।
sort() ও sorted()-এর পার্থক্য কী?
<code>list.sort()</code> লিস্টটিকেই সাজায় এবং <code>None</code> ফেরত দেয়; <code>sorted()</code> ফাংশন নতুন লিস্ট ফেরত দেয় এবং যেকোনো iterable-এর সঙ্গে কাজ করে।
লাইনের শেষে সেমিকোলন লাগে কি?
না। এক লাইনে একাধিক কমান্ডের জন্য সেমিকোলন চলে, কিন্তু স্বাভাবিক কোডে প্রতিটি নির্দেশ নতুন লাইনে লেখা হয়।
“Python 3.15: от новичка до профи” কোর্সে বিষয়টি অনুশীলনসহ বিস্তারিত শেখানো হয়েছে।
- Python 3.15 с нуля и для опытных: что нового и как учить
- Python 3.15: установка, REPL и первый скрипт за десять минут
- Переменные, числа и строки в Python: f-строки и t-строки
- Условия, циклы и match/case в Python: управляем ходом программы
- Списки, кортежи, словари и множества: frozendict в Python 3.15