آموزش برنامه‌نویسی پایتون و هوش مصنوعی
140 subscribers
358 photos
190 videos
41 files
172 links
🎯 یادگیری پایتون با رویکردی متفاوت
🚀 آموزش‌های کاملاً عملی و پروژه‌محور
💻 مسیر تبدیل شدن به یک برنامه‌نویس حرفه‌ای
🌟 فرقی نداره مبتدی هستی یا پیشرفته، از هر سطحی شروع کن و پایتون رو اصولی یاد بگیر
📩 ارتباط با ادمین: @YMahmoodian
09156519984
Download Telegram
۲۱. استفاده از with برای بستن خودکار منابع
در C باید دستی فایل رو fclose کنی، ولی در Python می‌تونی:
with open("data.txt", "w") as f: f.write("Hello") # اینجا فایل خودش بسته میشه
۲۲. استفاده از _ برای ذخیره نتیجه آخر در IDLE
در محیط Shell (IDLE یا REPL)، متغیر _ آخرین نتیجه رو نگه می‌داره:
>>> 5 + 3 8 >>> _ * 2 16
📌 این فقط در حالت تعاملی کار می‌کنه.
۲۳. استفاده از pass برای نوشتن کد ناقص
وقتی هنوز قراره کد بنویسی ولی نمی‌خوای خطا بده:
def func(): pass
📌 معادل {} خالی در C، ولی برای پایتون لازمه چون بلاک بدون کد خطا میده.
۲۴. استفاده از dir() و help() در IDLE
dir(obj) → لیست توابع و ویژگی‌ها
help(obj) → راهنمای شیء
>>> dir(str) >>> help(str.upper)
۲۵. اجرای چند خط همزمان در IDLE
در IDLE می‌تونی چند خط رو انتخاب و با F5 همه رو اجرا کنی.
۲۶. استفاده از name == "main"
برای جد
ا کردن بخش اجرای مستقیم و بخش کتابخانه:
def func(): print("Hello") if __name__ == "__main__": func()
📌 باعث میشه کد فقط وقتی اجرا بشه که فایل مستقیماً ران بشه.
۲۷. پاک کردن صفحه در IDLE یا هر محیط دیگر
در IDLE دستور رسمی نداره ولی ترفند:
import os os.system('cls') # ویندوز os.system('clear') # لینوکس/مک
یا با شورتکات: Ctrl + L (در بعضی ترمینال‌ها).
۲۸. چند ورودی در یک خط
a, b = map(int, input("Enter two numbers: ").split())
📌 ورودی: 3 4 → a=3, b=4
۲۹. استفاده از any() و all()
any() → اگر یکی True باشه، True
all() → اگر همه True باشن، True
nums = [True, False, True] print(any(nums)) # True print(all(nums)) # False
۳۰. __doc__ برای دیدن توضیحات تابع
print(str.upper.__doc__)
📌 مستقیم توضیح فانکشن رو نشون میده.
تفاوت‌های اصلی پایتون با سایر زبان‌ها (C، C++، Java، JavaScript و…) .


---

PyPlus: 50 نکته ریز و کاربردی پایتون با مثال

۱. تورفتگی (Indentation) به جای {}

if True:
print("سلام")
print("دنیا")
# C/Java: { } لازم است

۲. پایان خط با ; لازم نیست

x = 5
y = 10
print(x + y)
# چند دستور در یک خط: x=5; y=10; print(x+y)

۳. ++ و -- نداریم

x = 5
x += 1
x -= 1

۴. حلقه‌ها می‌توانند else داشته باشند

for i in range(3):
print(i)
else:
print("حلقه بدون break تمام شد")

۵. چند خروجی از تابع

def calc(a, b):
return a+b, a*b
s, m = calc(3,4)
print(s, m)

۶. آرگومان پیش‌فرض راحت

def greet(name="مهمان"):
print("سلام", name)
greet()
greet("علی")

۷. List Comprehension

nums = [x*2 for x in range(5)]

۸. *args و **kwargs

def show(*args, **kwargs):
print(args)
print(kwargs)
show(1,2,3,name="Ali")

۹. _ برای متغیر موقت

for _ in range(3):
print("سلام")

۱۰. کامنت با

x = 5 # سن

۱۱. شرط در یک خط (ternary)

x = 5
result = "مثبت" if x > 0 else "منفی"

۱۲. چند دستور در یک خط با ;

x=1; y=2; print(x+y)

۱۳. ادامه خط با \ یا ()

total = 1 + 2 + 3 + \
4 + 5 + 6

۱۴. رشته چندخطی

text = """سلام
دنیا"""
print(text)

۱۵. جابجایی متغیرها

a, b = 5, 10
a, b = b, a

۱۶. _ در اعداد بزرگ

big = 1_000_000
print(big)

۱۷. شرط داخل List Comprehension

even = [x for x in range(10) if x%2==0]

۱۸. zip برای ترکیب لیست‌ها

names = ["Ali","Sara"]
scores = [90,85]
for n,s in zip(names,scores):
print(n,s)

۱۹. enumerate برای گرفتن ایندکس

for idx, name in enumerate(names):
print(idx, name)

۲۰. with برای باز و بسته خودکار فایل

with open("data.txt","w") as f:
f.write("سلام")

۲۱. _ در IDLE برای آخرین نتیجه

>>> 5+3
8
>>> _*2
16

۲۲. pass برای بلوک خالی

if True:
pass

۲۳. dir() و help()

print(dir(str))
help(str.upper)

۲۴. اجرای چند خط در IDLE

چند خط را انتخاب و F5 → اجرا


۲۵. name == "main"

def func():
print("سلام")
if name == "main":
func()

۲۶. پاک کردن صفحه

import os
os.system('cls') # ویندوز
os.system('clear') # لینوکس/مک

۲۷. ورودی چندتایی در یک خط

a,b = map(int,input().split())

۲۸. any() و all()

nums = [True, False]
print(any(nums)) # True
print(all(nums)) # False

۲۹. doc برای توضیح توابع

print(str.upper.doc)

۳۰. تایپ دینامیک

x = 5
x = "سلام"

۳۱. Duck Typing

def quack(obj):
obj.quack()

۳۲. private convention با _ و __

class Test:
def init(self):
self._hidden = 5
self.__name = "Ali"

۳۳. unpacking لیست و tuple

a,b,*rest = [1,2,3,4]

۳۴. گرفتن substring

text = "Python"
print(text[0:3]) # Pyt

۳۵. negative index

text = "Python"
print(text[-1]) # n

۳۶. reversed() و [::-1]

print(list(reversed([1,2,3])))
print([1,2,3][::-1])

۳۷. set comprehension

squares = {x*x for x in range(5)}

۳۸. dict comprehension

d = {x:x*2 for x in range(5)}

۳۹. حذف با del

nums = [1,2,3]
del nums[0]

۴۰. unpacking dict

d = {'a':1,'b':2}
for k,v in d.items():
print(k,v)

۴۱. lambda functions

f = lambda x: x*2
print(f(5))

۴۲. map() و filter()

nums = [1,2,3]
print(list(map(lambda x:x*2, nums)))
print(list(filter(lambda x:x>1, nums)))

۴۳. Exception handling ساده

try:
1/0
except ZeroDivisionError:
print("تقسیم بر صفر")

۴۴. assert برای تست

x = 5
assert x>0, "خطا"

۴۵. import alias

import math as m
print(m.sqrt(16))

۴۶. slots برای کاهش مصرف حافظه

class Point:
slots = ['x','y']
def init(self,x,y):
self.x=x
self.y=y

۴۷. decorator ساده

def deco(func):
def wrapper():
print("قبل")
func()
print("بعد")
return wrapper

@deco
def hi():
print("سلام")
hi()

۴۸. contextlib برای مدیریت منابع

from contextlib import suppress
with suppress(ZeroDivisionError):
print(1/0)

۴۹. type hints

def add(x:int, y:int)->int:
return x+y

۵۰. f-string برای قالب‌بندی

name="Ali"
age=20
print(f"Name: {name}, Age: {age}")
PyPlus: نکات ریز پایتون ۵۱ تا ۱۰۰
۵۱. unpack کردن لیست داخل توابع
def add(x,y,z): print(x+y+z) nums = [1,2,3] add(*nums) # unpack
۵۲. unpack کردن دیکشنری داخل توابع
def greet(name, age): print(f"{name} is {age}") info = {"name":"Ali","age":20} greet(**info)
۵۳. نامگذاری متغیرهای داخلی کلاس با self
class Person: def __init__(self, name): self.name = name
۵۴. property برای getter/setter
class Person: def __init__(self, name): self._name = name @property def name(self): return self._name p = Person("Ali") print(p.name)
۵۵. حذف آیتم از dict با pop
d = {'a':1,'b':2} x = d.pop('a') print(d)
۵۶. defaultdict از collections
from collections import defaultdict d = defaultdict(int) d['x'] += 1 print(d['x']) # 1
۵۷. Counter از collections
from collections import Counter c = Counter([1,1,2,3]) print(c)
۵۸. namedtuple
from collections import namedtuple Point = namedtuple('Point','x y') p = Point(1,2) print(p.x, p.y)
۵۹. OrderedDict
from collections import OrderedDict d = OrderedDict() d['a']=1 d['b']=2
۶۰. setdefault
d = {} d.setdefault('x', []).append(1) print(d) # {'x':[1]}
۶۱. شبیه‌ساز ATM (مثال پروژه کوچک)
balance = 1000 pin = "1234" input_pin = input("Enter PIN: ") if input_pin == pin: amount = int(input("Amount: ")) if amount <= balance: balance -= amount print("برداشت انجام شد:", amount) else: print("موجودی کافی نیست")
۶۲. بررسی نوع داده
x = 5 print(type(x))
۶۳. isinstance
print(isinstance(5,int)) # True
۶۴. getattr, setattr, delattr
class Person: pass p = Person() setattr(p,'name','Ali') print(getattr(p,'name')) delattr(p,'name')
۶۵. eval و exec (با احتیاط)
x = 1 print(eval("x+5")) # 6 exec("x=10") print(x) # 10
۶۶. import جزئی
from math import sqrt print(sqrt(16))
۶۷. import چندگانه
import os, sys
۶۸. sys.argv برای پارامترها
import sys print(sys.argv) # لیست آرگومان‌های خط فرمان
۶۹. unpack کردن چند متغیر با *
a,b,*rest = [1,2,3,4,5] print(rest) # [3,4,5]
۷۰. tuple packing/unpacking
t = (1,2,3) x,y,z = t
۷۱. swap بدون temp
a,b = 5,10 a,b = b,a
۷۲. فیلتر کردن لیست
nums = [1,2,3,4] even = list(filter(lambda x:x%2==0, nums))
۷۳. map
squared = list(map(lambda x:x**2, [1,2,3]))
۷۴. reduce
from functools import reduce product = reduce(lambda x,y:x*y, [1,2,3,4]) print(product)
۷۵. itertools برای ترکیب و permutation
import itertools for p in itertools.permutations([1,2,3]): print(p)
۷۶. generator expression
gen = (x*x for x in range(5)) for i in gen: print(i)
۷۷. yield
def gen(): for i in range(3): yield i for x in gen(): print(x)
۷۸. جمع کردن دیکشنری‌ها
d1 = {'a':1} d2 = {'b':2} d = {**d1, **d2}
۷۹. slicing پیشرفته
nums = [0,1,2,3,4] print(nums[::2]) # [0,2,4]
۸۰. negative step
print(nums[::-1]) # معکوس لیست
۸۱. string formatting قدیمی
name = "Ali" print("Name: %s" % name)
۸۲. multi-line string با \
text = "سلام " \ "دنیا"
۸۳. bytes و bytearray
b = b"hello" ba = bytearray(b)
۸۴. assert
x = 5 assert x>0, "خطا"
۸۵. ternary در list comprehension
nums = [1,2,3,4] res = ["even" if x%2==0 else "odd" for x in nums]
۸۶. else بعد از try
try: x=1/1 except ZeroDivisionError: print("error") else: print("موفق")
۸۷. finally
try: x=1/0 finally: print("همیشه اجرا می‌شود")
۸۸. chaining exceptions
try: 1/0 except ZeroDivisionError as e: raise ValueError("اشتباه") from e
۸۹. assert vs raise
x = -1 assert x>=0, "خطا" # raise ValueError("خطا") جایگزین assert برای production
۹۰. import from package
from os.path import join print(join("a","b"))
۹۱. module alias
import numpy as np
۹۲. global keyword
x = 5 def func(): global x x += 1
۹۳. nonlocal keyword
def outer(): x = 5 def inner(): nonlocal x x += 1 inner() print(x)
۹۴. closures
def outer(x): def inner(y): return x+y return inner f = outer(5) print(f(3)) # 8
۹۵. partial functions
from functools import partial def power(x,y): return x**y square = partial(power,y=2) print(square(5)) # 25
۹۶. context manager سفارشی
class MyCM: def __enter__(self): print("شروع") def __exit__(self, exc_type, exc_val, exc_tb): print("پایان") with MyCM(): print("درون بلوک")
۹۷. comprehension nested
matrix = [[i*j for j in range(3)] for i in range(3)]
۹۸. walrus operator :=
if (n:=len([1,2,3]))>2: print(n)
۹۹. type hint پیشرفته
from typing import List, Dict def func(nums: List[int]) -> Dict[str,int]: return {"sum":sum(nums)}
۱۰۰. f-string پیشرفته
name="Ali" age=20 print(f"{name.upper()} is {age*2} years old")
تفاوت و ویژگی کلیدی پایتون با مثال کوتاه و مقایسه با زبان‌های دیگه مثل C, Java, JavaScript.
.


---

۱. تفاوت‌های Syntax (شکل نوشتن کد)

1. بدون اکولاد {}، با تورفتگی



if x > 0:
print("Positive")

(در C/Java باید اکولاد بذاری)

2. پایان بلوک‌ها با تورفتگی، نه کلیدواژه یا پرانتز



for i in range(3):
print(i)

3. استفاده از elif به جای else if



if x > 0:
print("pos")
elif x == 0:
print("zero")
else:
print("neg")

4. نداشتن نوع داده موقع تعریف متغیر



a = 5 # int
a = "hi" # str

5. چند دستور در یک خط با ;



x = 5; y = 10; print(x+y)

6. استفاده از : بعد شرط، حلقه یا تابع



def hello():
print("Hi")

7. پایتون به جای {} برای بلوک‌ها از خط جدید استفاده می‌کند



if True:
print("OK")


---

۲. ویژگی‌های خاص زبان

8. همه چیز شیء است



print((5).bit_length()) # متد روی عدد

9. Dynamic typing



a = 5
a = "now string"

10. حلقه for روی iterable



for ch in "abc":
print(ch)

11. حلقه سنتی for(int i=0...) وجود ندارد


12. توابع درون توابع



def outer():
def inner():
print("inner")
inner()

13. توابع بی‌نام (lambda)



square = lambda x: x**2
print(square(5))

14. List comprehension



nums = [x**2 for x in range(5)]

15. ساختار داده‌ها بدون import



lst = [1, 2]
st = {1, 2}
tp = (1, 2)
dc = {"a": 1}

16. مقادیر پیش‌فرض در پارامترهای تابع



def say(msg="Hi"):
print(msg)

17. کلاس‌ها بدون public/private



class A:
_x = 1 # protected عرفی

18. مدیریت حافظه خودکار



# نیازی به free() نیست

19. پشتیبانی از چند وراثت



class A: pass
class B: pass
class C(A, B): pass

20. پارامترهای متغیر در تابع



def f(*args):
print(args)


---

۳. رفتار متفاوت

21. / همیشه float



print(5/2) # 2.5

22. تقسیم صحیح با //



print(5//2) # 2

23. مقایسه رشته‌ها بر اساس Unicode



print("a" < "b") # True

24. مقایسه مستقیم رشته و عدد خطا می‌دهد



# print("5" > 3) # Error

25. else در حلقه



for i in range(3):
pass
else:
print("done")

26. مدیریت خطا با try/except



try:
1/0
except ZeroDivisionError:
print("No")

27. می‌توان توابع را به متغیر داد



def hi(): print("hi")
x = hi
x()

28. None به جای null



a = None

29. True و False با حروف بزرگ



x = True

30. نوع bool زیرمجموعه int



print(True + 1) # 2


---

۴. امکانات راحت

31. چاپ چند مقدار با print



print(1, 2, 3)

32. f-string برای فرمت‌دهی



name = "Ali"
print(f"Hi {name}")

33. تعویض مقادیر بدون متغیر موقت



a, b = b, a

34. باز کردن لیست با *



lst = [1, 2, 3]
print(*lst)

35. عبارت چندخطی با \ یا پرانتز



x = (1 + 2 +
3 + 4)

36. شرط تک‌خطی



x = "yes" if a > 0 else "no"

37. حلقه روی dict



for k, v in {"a":1}.items():
print(k, v)

38. enumerate



for i, v in enumerate(["a","b"]):
print(i, v)

39. zip



for a, b in zip([1,2], [3,4]):
print(a, b)

40. any و all



print(any([0,1,0]))
print(all([1,1,1]))


---

۵. رفتارهای داخلی خاص

41. نام‌گذاری با _



_ = 5 # معمولاً برای مقدار بی‌اهمیت

42. حلقه بی‌نهایت با while True



while True:
break

43. پشتیبانی از break/continue مثل C



for i in range(5):
if i==2: continue

44. import کردن فقط بخشی از ماژول



from math import sqrt

45. اجرای فایل به عنوان اسکریپت یا ماژول



if name == "main":
print("Run directly")

46. پشتیبانی از with برای مدیریت منابع



with open("f.txt") as f:
data = f.read()

47. پشتیبانی از generator



def gen():
yield 1

48. is برای مقایسه هویت، نه مقدار



print(a is b)

49. None در مقایسه کوچکتر از هرچیز نیست (برخلاف بعضی زبان‌ها)


50. کتابخانه استاندارد بسیار گسترده
بدون نصب اضافه، از math, datetime, os و... استفاده می‌کنی.
تفاوت‌های اصلی پایتون با زبان‌های دیگه باشه و هم نکات ریز و کاربردی خود پایتون.


---

۵۰ نکته مهم و ریز در پایتون


---

۱. بدون {} یا ;
پایتون برای بلوک‌ها به جای آکولاد از تورفتگی استفاده می‌کند.

if True:
print("Hello") # تورفتگی نشان‌دهنده بلوک است


---

۲. نیاز به : در ابتدای بلوک‌ها

for i in range(3):
print(i)


---

۳. بدون تعریف نوع متغیر

x = 5 # int
x = "Hi" # str


---

۴. متغیر نوعش در طول برنامه می‌تواند عوض شود (Dynamic Typing).
در C/Java این غیرممکن است.


---

۵. print یک تابع است

print("Hello")


---

۶. چند مقدار در یک خط

x, y = 10, 20


---

۷. تعویض مقادیر بدون متغیر کمکی

a, b = 5, 10
a, b = b, a


---

۸. بدون ++ یا --

x += 1 # باید این‌طور بنویسی


---

۹. رشته‌ها با تک یا دو کوتیشن

s1 = 'Hello'
s2 = "Hello"


---

۱۰. رشته چند خطی با """

text = """Line 1
Line 2"""


---

۱۱. لیست‌ها انعطاف‌پذیرند

my_list = [1, "Hi", 3.5]


---

۱۲. حلقه for روی مجموعه‌ها می‌چرخد، نه فقط عدد

for ch in "abc":
print(ch)


---

۱۳. حلقه while همانند دیگر زبان‌هاست ولی نیاز به : دارد.


---

۱۴. توابع با def تعریف می‌شوند

def greet():
print("Hi")


---

۱۵. تابع می‌تواند چند مقدار برگرداند

def info():
return "Ali", 25
name, age = info()


---

۱۶. تابع می‌تواند بدون مقدار برگشتی باشد (برمی‌گرداند None).


---

۱۷. مقدار پیش‌فرض در پارامتر تابع

def hello(name="Guest"):
print("Hi", name)


---

۱۸. توابع لامبدا (ناشناس)

square = lambda x: x*x


---

۱۹. رشته‌ها غیرقابل تغییرند (immutable).

s = "Hi"
# s[0] = "h" → خطا


---

۲۰. لیست‌ها قابل تغییرند (mutable).

lst = [1, 2]
lst[0] = 99


---

۲۱. None معادل null است ولی نوعش NoneType است.


---

۲۲. در شرط‌ها صفر و لیست خالی False حساب می‌شوند.


---

۲۳. in برای جستجو

if "a" in "cat":
print("yes")


---

۲۴. ساخت لیست سریع با List Comprehension

nums = [x*2 for x in range(5)]


---

۲۵. range در پایتون یک شیء تولیدکننده است

for i in range(5):
print(i)


---

۲۶. از enumerate برای گرفتن شماره اندیس استفاده کن

for i, val in enumerate(["a", "b"]):
print(i, val)


---

۲۷. از zip برای پیمایش همزمان چند لیست استفاده کن

for a, b in zip([1,2], [3,4]):
print(a, b)


---

۲۸. لیست، تاپل، دیکشنری، مجموعه (set) از ساختارهای مهم داده هستند.


---

۲۹. تاپل غیرقابل تغییر است

t = (1, 2)


---

۳۰. مجموعه (set) عنصر تکراری ندارد

s = {1, 2, 2}
print(s) # {1, 2}


---

۳۱. دیکشنری کلید-مقدار دارد

d = {"name": "Ali", "age": 25}


---

۳۲. پیمایش دیکشنری

for k, v in d.items():
print(k, v)


---

۳۳. شرط سه‌تایی به سبک پایتون

x = "yes" if True else "no"


---

۳۴. چند خط کد در یک خط با ; (بهتره نکنیم)

a = 5; b = 6


---

۳۵. استفاده از _ به عنوان متغیر موقت

for _ in range(3):
print("Hi")


---

۳۶. جداکننده در print

print(1, 2, 3, sep="-")


---

۳۷. پایان‌دهنده print

print("Hi", end=" ")
print("there")


---

۳۸. import کل کتابخانه

import math


---

۳۹. import با نام مستعار

import numpy as np


---

۴۰. import بخشی از کتابخانه

from math import sqrt


---

۴۱. مدیریت خطا با try-except

try:
x = 1/0
except ZeroDivisionError:
print("خطا")


---

۴۲. finally برای اجرا در هر حالت

try:
pass
finally:
print("Done")


---

۴۳. raise برای ایجاد خطا

raise ValueError("پیغام")


---

۴۴. استفاده از with برای مدیریت منابع

with open("file.txt") as f:
data = f.read()


---

۴۵. توابع بازگشتی (Recursion)

def fact(n):
return 1 if n == 0 else n*fact(n-1)


---

۴۶. تابع می‌تواند تابع برگرداند

def outer():
def inner():
print("Hi")
return inner


---

۴۷. generator با yield

def gen():
yield 1
yield 2


---

۴۸. decorator برای تغییر رفتار تابع

def deco(func):
def wrapper():
print("start")
func()
return wrapper


---

۴۹. type hinting برای مشخص کردن نوع

def add(x: int, y: int) -> int:
return x + y


---

۵۰. پایتون یک زبان interpreted است، خط به خط اجرا می‌شود.
تمام اصطلاحات، قوانین و شرایط پایتون


---

1. Indentation: فاصله یا تورفتگی که بلوک‌ها را مشخص می‌کند.


2. Colon :: علامت شروع بلوک بعد از if, for, while, def, class.


3. pass: جایگزین بلوک خالی برای جلوگیری از خطا.


4. Comment #: توضیح کوتاه داخل کد که اجرا نمی‌شود.


5. Multi-line string """ or ''': رشته‌های چند خطی.


6. _ (IDLE): نگه داشتن آخرین نتیجه در محیط تعاملی.


7. *args: آرگومان‌های نامحدود مکانی در تابع.


8. **kwargs: آرگومان‌های نامحدود کلیدی در تابع.


9. List comprehension: ایجاد لیست با یک خط و شرط.


10. Tuple unpacking: استخراج مقادیر tuple یا list در متغیرهای جداگانه.


11. Dictionary comprehension: ساخت دیکشنری با یک خط.


12. Set comprehension: ساخت مجموعه با یک خط.


13. with statement: مدیریت خودکار منابع مثل فایل‌ها.


14. try/except/else/finally: مدیریت استثناها و اجرای کد همیشه.


15. lambda: تعریف تابع ناشناس یک خطی.


16. map(): اعمال تابع روی همه اعضای iterable.


17. filter(): فیلتر کردن اعضای iterable با شرط.


18. enumerate(): گرفتن ایندکس و مقدار در حلقه.


19. zip(): ترکیب چند iterable در یک حلقه.


20. isinstance(): بررسی نوع داده متغیر.


21. global: تغییر متغیر سراسری داخل تابع.


22. nonlocal: تغییر متغیر در تابع والد.


23. name == "main": اجرای کد فقط وقتی فایل مستقیم اجرا می‌شود.


24. type(): گرفتن نوع متغیر یا شیء.


25. dir(): نمایش تمام متدها و ویژگی‌های شیء.


26. help(): نمایش مستندات و توضیحات شیء یا تابع.


27. f-string: فرمت رشته سریع با {}.


28. any(): True اگر یکی از مقادیر True باشد.


29. all(): True اگر همه مقادیر True باشند.


30. doc: نمایش توضیحات تابع یا کلاس.


31. Dynamic typing: نوع متغیر در زمان اجرا مشخص می‌شود.


32. Immutable types: نوع داده‌ای که تغییر نمی‌کند (str, tuple).


33. Mutable types: نوع داده‌ای که تغییر می‌کند (list, dict, set).


34. del: حذف متغیر یا عضو collection.


35. break: خروج فوری از حلقه.


36. continue: رد کردن بقیه حلقه و رفتن به iteration بعدی.


37. return: خروج از تابع و برگرداندن مقدار.


38. yield: تولید مقادیر generator به جای return.


39. Generator: تابعی که مقادیر را به صورت lazy تولید می‌کند.


40. Decorator: تابعی که رفتار تابع دیگر را تغییر می‌دهد.


41. Context manager: مدیریت منابع با with.


42. Exception: خطای runtime که قابل کنترل است.


43. Module: فایل پایتون با کد قابل استفاده دوباره.


44. Package: پوشه شامل چند ماژول با init.py.


45. Import: بارگذاری ماژول یا package.


46. init.py: مشخص کردن پوشه به عنوان package.


47. * import: وارد کردن همه محتوای ماژول (توصیه نمی‌شود).


48. List slicing: دسترسی به زیرلیست با [start:end:step].


49. String slicing: دسترسی به زیررشته با [start:end:step].


50. init: تابع سازنده کلاس.
51. Class: قالبی برای ساخت اشیاء و تعریف رفتار و ویژگی‌ها.


52. Object: نمونه ساخته‌شده از کلاس.


53. Method: تابعی که داخل کلاس تعریف می‌شود.


54. Instance variable: متغیری که متعلق به هر نمونه (object) است.


55. Class variable: متغیری که مشترک بین همه نمونه‌های کلاس است.


56. Inheritance: ارث‌بری رفتار و ویژگی‌ها از کلاس والد.


57. Multiple inheritance: ارث‌بری از چند کلاس والد.


58. Polymorphism: توانایی تابع یا متد برای رفتار متفاوت با اشیاء مختلف.


59. Encapsulation: پنهان کردن جزئیات داخلی شیء و فقط ارائه رابط.


60. Private variable/method: با _ یا __ مشخص می‌شود و خارج کلاس محدود است.


61. Property: متدهایی که مانند متغیر قابل دسترسی هستند.


62. Static method: متدی که به نمونه وابسته نیست و با @staticmethod تعریف می‌شود.


63. Class method: متدی که به کلاس وابسته است و با @classmethod تعریف می‌شود.


64. Magic / Dunder methods: متدهای خاص با method برای رفتار داخلی اشیاء.


65. Operator overloading: تغییر رفتار عملگرها برای کلاس‌ها.


66. str: نمایش رشته‌ای از شیء برای print.


67. repr: نمایش رسمی و دقیق شیء.


68. len: تعیین طول شیء با len().


69. Iterator: شیئی که توانایی پیمایش با next() دارد.


70. Iterable: شیئی که می‌توان آن را حلقه زد (for).


71. Generator expression: مشابه list comprehension ولی lazy است.


72. yield from: استفاده از generator دیگری در generator.


73. Async function: تابع غیرهمزمان با async def.


74. Await: توقف موقت تابع async تا نتیجه آماده شود.


75. Event loop: چرخه‌ای که async functions را مدیریت می‌کند.


76. Coroutine: تابع async که قابلیت توقف و ادامه دارد.


77. Decorator chaining: استفاده همزمان از چند decorator روی یک تابع.


78. Memoization: ذخیره نتایج تابع برای اجرای سریع‌تر.


79. Contextlib: ماژولی برای ساخت context manager سفارشی.


80. Type hinting: مشخص کردن نوع متغیر یا آرگومان تابع.


81. Optional type: نشان‌دهنده متغیری که ممکن است None باشد.


82. Union type: نشان‌دهنده متغیری که می‌تواند چند نوع داشته باشد.


83. dataclass: ایجاد کلاس با کمترین کدنویسی برای ذخیره داده.


84. field(): تعریف ویژگی پیشرفته در dataclass.


85. post_init: تابع بعد از ساخت dataclass اجرا می‌شود.


86. Mutable default warning: استفاده از لیست یا دیکشنری به عنوان مقدار پیش‌فرض در تابع می‌تواند خطرناک باشد.


87. functools.lru_cache: کش کردن نتایج تابع برای بهینه‌سازی.


88. slots: محدود کردن ویژگی‌های کلاس برای کاهش مصرف حافظه.


89. Property setter/getter/deleter: کنترل دسترسی به ویژگی‌ها با property.


90. abc module: تعریف کلاس‌ها و متدهای انتزاعی (Abstract Base Class).


91. Metaclass: کلاس کلاس‌ها برای کنترل رفتار کلاس‌ها.


92. Monkey patching: تغییر رفتار کلاس یا ماژول در زمان اجرا.


93. Duck typing: نوع متغیر با رفتار آن شناسایی می‌شود نه با کلاس آن.


94. call: امکان فراخوانی شیء مانند تابع.


95. enter / exit: متدهای context manager برای with.


96. getitem / setitem: دسترسی و تغییر عناصر با [] برای کلاس‌ها.


97. iter: تعریف iterator برای کلاس.


98. next: تولید مقدار بعدی برای iterator.


99. Weak references: مراجع ضعیف به اشیاء برای جلوگیری از حافظه مصرفی اضافی.


100. Garbage collection: جمع‌آوری خودکار حافظه بلااستفاده توسط پایتون.
تفاوت‌ها و ویژگی‌های اصلی آن با سایر زبان‌ها را نشان می‌دهد


---

۲۰ نکته‌ی مهم پایتون با مثال

۱. پایتون مفسری (Interpreted) است
کد خط به خط اجرا می‌شود، نیازی به کامپایل کل برنامه نیست.

x = 5
print(x + 3) # خروجی: 8

۲. پایتون تعاملی (Interactive) است
می‌توان در محیط REPL یا IDLE کد را تست کرد و نتیجه فوری گرفت.

>>> 2 + 3
5
>>> _
5 # _ آخرین نتیجه

۳. پایتون شیء‌گرا است (Object-Oriented)
تقریباً همه چیز در پایتون یک شیء است.

x = "Hello"
print(x.upper()) # خروجی: HELLO

۴. تورفتگی (Indentation) به جای {}
ساختار بلوک‌ها با فاصله مشخص می‌شود، نه با {}.

if True:
print("سلام")

۵. استفاده از : برای شروع بلوک‌ها
بعد از if, for, while, def, class باید : گذاشت.

for i in range(3):
print(i)

۶. شرط یک خطه با :
می‌توان شرط‌ها و حلقه‌ها را در یک خط نوشت.

if True: print("سلام")

۷. عدم وجود ++ و --
برای افزایش یا کاهش از += و -= استفاده می‌شود.

x = 5
x += 1

۸. pass برای بلوک خالی
اگر بلوک باید خالی باشد، pass لازم است.

def func():
pass

۹. چند دستور در یک خط با ;
چند دستور را می‌توان با ; جدا کرد.

x = 5; y = 10; print(x + y)

۱۰. ادامه خط طولانی با \ یا پرانتز

total = 1 + 2 + 3 + \
4 + 5 + 6

۱۱. رشته چندخطی با ''' یا """

text = """خط اول
خط دوم"""

۱۲. متغیر موقت _
در حلقه یا محیط REPL برای مقادیر موقت یا آخرین نتیجه استفاده می‌شود.

for _ in range(3):
print("Hello")

۱۳. مقداردهی چندگانه

a, b, c = 1, 2, 3
a, b = b, a # جابجایی

۱۴. شرط در یک خط (ternary)

x = 5
result = "مثبت" if x > 0 else "منفی"

۱۵. else در حلقه‌ها
else اجرا می‌شود اگر حلقه بدون break تمام شود.

for i in range(3):
print(i)
else:
print("حلقه تمام شد")

۱۶. آرگومان پیش‌فرض تابع

def greet(name="مهمان"):
print("سلام", name)

۱۷. بازگشت چند مقدار از تابع

def calc(a, b):
return a+b, a*b
s, m = calc(3, 4)

**۱۸. *args و kwargs

def show(*args, **kwargs):
print(args)
print(kwargs)
show(1, 2, name="Ali")

۱۹. List Comprehension

nums = [i for i in range(5)]
even = [i for i in range(10) if i%2==0]

۲۰. zip و enumerate

names = ["Ali","Sara"]
scores = [90,85]
for i, (name, score) in enumerate(zip(names,scores)):
print(i, name, score)


---
۲۱. استفاده از with برای مدیریت فایل‌ها

با with فایل‌ها به‌صورت خودکار بسته می‌شوند، نیازی به fclose یا close دستی نیست.

with open("data.txt", "w") as f:
f.write("سلام")
# فایل به‌صورت خودکار بسته شد

۲۲. _ در محیط REPL
در محیط تعاملی (IDLE، REPL)، _ آخرین نتیجه را نگه می‌دارد.

>>> 5 + 3
8
>>> _ * 2
16

۲۳. استفاده از dir() و help()
برای دیدن ویژگی‌ها و راهنمای اشیاء.

>>> dir(str)
>>> help(str.upper)

۲۴. اجرای چند خط همزمان در IDLE
می‌توان چند خط را انتخاب و با F5 اجرا کرد.

۲۵. name == "main"
برای جدا کردن بخش کتابخانه از اجرای مستقیم کد.

def func():
print("Hello")

if name == "main":
func()

۲۶. پاک کردن صفحه در IDLE

import os
os.system('cls') # ویندوز
os.system('clear') # لینوکس/مک

۲۷. ورودی چندگانه در یک خط

a, b = map(int, input("دو عدد وارد کن: ").split())

۲۸. any() و all()

nums = [True, False, True]
print(any(nums)) # True
print(all(nums)) # False

۲۹. doc برای مستندات

print(str.upper.doc)

۳۰. شرط چند خطه با پرانتز

if (1 < 2 and
2 < 3):
print("درسته")

۳۱. استفاده از assert برای تست

x = 5
assert x > 0, "x باید مثبت باشد"

۳۲. حذف عنصر از لیست با del

nums = [1,2,3]
del nums[1]
print(nums) # [1,3]

۳۳. حذف عنصر با pop()

nums = [1,2,3]
x = nums.pop(1)
print(x, nums) # 2 [1,3]

۳۴. حذف عنصر با remove()

nums = [1,2,3]
nums.remove(2)
print(nums) # [1,3]

۳۵. استفاده از enumerate در حلقه
شماره ایندکس همراه عنصر می‌دهد.

names = ["Ali","Sara"]
for i, name in enumerate(names):
print(i, name)

۳۶. استفاده از zip برای ترکیب لیست‌ها

names = ["Ali","Sara"]
scores = [90,85]
for name, score in zip(names, scores):
print(name, score)

۳۷. شرط در List Comprehension

evens = [x for x in range(10) if x%2==0]

۳۸. متدهای string

s = "hello"
print(s.upper()) # HELLO
print(s.capitalize()) # Hello

۳۹. روش‌های slice کردن لیست‌ها

nums = [0,1,2,3,4]
print(nums[1:4]) # [1,2,3]
print(nums[:3]) # [0,1,2]
print(nums[::2]) # [0,2,4]

۴۰. unpack کردن tuple یا list

a, b, c = [1,2,3]
x, *y = [1,2,3,4]
print(x, y) # 1 [2,3,4]

۴۱. تبدیل انواع داده با int(), str(), float()

x = int("5")
y = float("3.2")
z = str(10)

۴۲. type() برای گرفتن نوع داده

x = 5
print(type(x)) # <class 'int'>

۴۳. isinstance() برای بررسی نوع

x = 5
print(isinstance(x, int)) # True

۴۴. eval() اجرای رشته به‌عنوان کد

expr = "5 + 3"
print(eval(expr)) # 8

۴۵. map() برای اعمال تابع روی لیست

nums = [1,2,3]
squared = list(map(lambda x: x**2, nums))
print(squared) # [1,4,9]

۴۶. filter() برای فیلتر کردن لیست

nums = [1,2,3,4]
evens = list(filter(lambda x: x%2==0, nums))
print(evens) # [2,4]

۴۷. reduce() جمع یا ترکیب مقادیر

from functools import reduce
nums = [1,2,3,4]
sum_all = reduce(lambda x,y: x+y, nums)
print(sum_all) # 10

۴۸. lambda برای تابع کوتاه

f = lambda x: x**2
print(f(5)) # 25

۴۹. unpack dictionary با kwargs

data = {"name":"Ali","age":20}
def show(name, age):
print(name, age)
show(**data) # Ali 20

۵۰. کار با تاریخ و زمان (datetime)

from datetime import datetime
now = datetime.now()
print(now.year, now.month, now.day)


---
۵۱. else با حلقه while

برخلاف C، پایتون اجازه می‌دهد حلقه while هم else داشته باشد.

i = 0
while i < 3:
print(i)
i += 1
else:
print("حلقه تمام شد") # وقتی بدون break کامل شود

۵۲. استفاده از break و continue

for i in range(5):
if i==2:
continue # رد کردن این تکرار
if i==4:
break # خروج از حلقه
print(i)

۵۳. assert برای بررسی شرایط در اجرا

x = 5
assert x > 0, "x باید مثبت باشد"

۵۴. متغیرهای جهانی global

x = 5
def change():
global x
x = 10
change()
print(x) # 10

۵۵. nonlocal برای توابع تو در تو

def outer():
x = 5
def inner():
nonlocal x
x = 10
inner()
print(x) # 10
outer()

۵۶. تغییر نوع داده با type casting

x = int("10")
y = float("3.5")
z = str(20)

۵۷. استفاده از try/except برای مدیریت خطا

try:
x = 5 / 0
except ZeroDivisionError:
print("تقسیم بر صفر!")

۵۸. else در try/except

try:
x = 5 / 1
except ZeroDivisionError:
print("خطا!")
else:
print("هیچ خطایی نبود") # اجرا می‌شود اگر except فعال نشود

۵۹. finally در try/except

try:
x = 5 / 0
finally:
print("همیشه اجرا می‌شود")

۶۰. assert برای تست سریع

def square(x):
return x*x
assert square(3)==9

۶۱. مدیریت منابع با with

with open("file.txt", "r") as f:
content = f.read()
# فایل خودکار بسته شد

۶۲. استفاده از enumerate با شروع دلخواه

names = ["Ali", "Sara"]
for i, name in enumerate(names, start=1):
print(i, name) # شماره از 1 شروع می‌شود

۶۳. ترکیب لیست‌ها با + یا extend()

a = [1,2]
b = [3,4]
c = a + b
a.extend(b)

۶۴. unpack کردن با * برای لیست‌ها

nums = [1,2,3,4]
a, *b, c = nums
print(a, b, c) # 1 [2,3] 4

۶۵. استفاده از set برای حذف عناصر تکراری

nums = [1,2,2,3,3]
unique = set(nums)
print(unique) # {1,2,3}

۶۶. dict comprehension

squares = {x: x*x for x in range(5)}
print(squares)

۶۷. استفاده از frozenset
یک set ثابت که تغییر نمی‌کند.

fs = frozenset([1,2,3])

۶۸. copy و deepcopy

import copy
a = [[1,2],[3,4]]
b = copy.copy(a) # shallow copy
c = copy.deepcopy(a) # deep copy

۶۹. use of itertools
برای تولید توالی‌های پیشرفته.

import itertools
for i in itertools.permutations([1,2,3], 2):
print(i)

۷۰. استفاده از enumerate برای tuple unpacking

lst = [("Ali", 20), ("Sara", 22)]
for i, (name, age) in enumerate(lst):
print(i, name, age)

۷۱. isinstance برای چند نوع

x = 5
print(isinstance(x, (int,float))) # True

۷۲. getattr, setattr, delattr

class Person:
name = "Ali"
print(getattr(Person, "name"))
setattr(Person, "age", 20)
delattr(Person, "name")

۷۳. slots برای کلاس
محدود کردن attribute‌ها در کلاس، صرفه‌جویی حافظه

class Person:
slots = ["name", "age"]

۷۴. property برای getter/setter

class Circle:
def init(self, r):
self._r = r
@property
def radius(self):
return self._r
@radius.setter
def radius(self, value):
self._r = value

۷۵. استفاده از zip و unpacking برای دیکشنری

keys = ["a","b"]
values = [1,2]
d = dict(zip(keys, values))

۷۶. generator expression

nums = (x*x for x in range(5))
for n in nums:
print(n)

۷۷. yield برای generator

def gen():
for i in range(3):
yield i
for n in gen():
print(n)

۷۸. استفاده از map و lambda

nums = [1,2,3]
squared = list(map(lambda x: x**2, nums))

۷۹. استفاده از filter و lambda

nums = [1,2,3,4]
evens = list(filter(lambda x: x%2==0, nums))

۸۰. reduce و functools

from functools import reduce
nums = [1,2,3,4]
sum_all = reduce(lambda x,y: x+y, nums)
۸۱. نام‌گذاری خصوصی با _ و __

class Person:
_name = "Ali" # protected-like
__age = 20 # private-like

📌 در Python هیچ محدودیت واقعی نیست، فقط convention است.

۸۲. استفاده از dir برای لیست کردن attribute‌ها

class A:
x = 5
print(dir(A))

۸۳. استفاده از help برای راهنمایی توابع

help(str.upper)

۸۴. eval برای اجرای رشته به عنوان کد

x = 1
y = 2
expr = "x + y"
print(eval(expr)) # 3

۸۵. exec برای اجرای چند خط کد

code = """
for i in range(3):
print(i)
"""
exec(code)

۸۶. استفاده از type برای بررسی نوع

x = 5
print(type(x)) # <class 'int'>

۸۷. استفاده از isinstance برای بررسی نوع

x = 5
print(isinstance(x, int)) # True

۸۸. کلاس‌های abstract با abc

from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass

۸۹. استفاده از @staticmethod و @classmethod

class MyClass:
@staticmethod
def static_method(): print("Static")
@classmethod
def class_method(cls): print("Class method")

۹۰. unpack کردن tuple و list در تابع

def add(a,b,c): return a+b+c
nums = [1,2,3]
print(add(*nums)) # unpacking

۹۱. unpack کردن دیکشنری در تابع

def greet(name, age): print(name, age)
info = {"name":"Ali","age":20}
greet(**info)

۹۲. استفاده از format برای رشته

name = "Ali"
age = 20
print("سلام {} سن {} است".format(name, age))

۹۳. f-string برای رشته‌های قالبی (Python 3.6+)

print(f"سلام {name} سن {age} است")

۹۴. استفاده از slice برای لیست و رشته

lst = [1,2,3,4,5]
print(lst[1:4]) # [2,3,4]

۹۵. reversed و sorted

lst = [3,1,2]
print(list(reversed(lst)))
print(sorted(lst))

۹۶. any و all

nums = [0,1,2]
print(any(nums)) # True
print(all(nums)) # False

۹۷. zip برای ترکیب چند iterable

a = [1,2]
b = ["a","b"]
print(list(zip(a,b))) # [(1,"a"),(2,"b")]

۹۸. enumerate برای گرفتن ایندکس و مقدار

lst = ["a","b"]
for i, val in enumerate(lst):
print(i,val)

۹۹. استفاده از itertools برای ترکیب و تولید توالی‌ها

import itertools
for combo in itertools.combinations([1,2,3],2):
print(combo)

۱۰۰. استفاده از timeit برای تست سرعت کد

import timeit
print(timeit.timeit("sum(range(100))", number=1000))
لیست کامل از اصطلاحات پایه برنامه‌نویسی و کامپیوتر

---

1. داده (Data): مقادیر یا اطلاعاتی که توسط برنامه ذخیره یا پردازش می‌شوند.


2. متغیر (Variable): مکانی در حافظه که برای ذخیره داده‌ها استفاده می‌شود.


3. ثابت (Constant): داده‌ای که مقدار آن در طول برنامه تغییر نمی‌کند.


4. نوع داده (Data Type): دسته‌بندی داده‌ها مانند عدد، رشته، بولین و …


5. رشته (String): متنی که داخل "" یا '' قرار می‌گیرد.


6. عدد صحیح (Integer): عدد بدون اعشار، مانند 5 یا -12.


7. عدد اعشاری (Float): عدد با قسمت اعشار، مانند 3.14.


8. بولین (Boolean): نوع داده با دو مقدار True یا False.


9. لیست (List): مجموعه‌ای مرتب از داده‌ها که قابل تغییر است.


10. تاپل (Tuple): مجموعه‌ای مرتب از داده‌ها که تغییرناپذیر است.


11. مجموعه (Set): مجموعه‌ای بدون ترتیب و بدون تکرار از داده‌ها.


12. دایکشنری (Dictionary): مجموعه‌ای از جفت‌های کلید و مقدار.


13. تابع (Function/Method): بلوکی از کد که کار مشخصی انجام می‌دهد.


14. پارامتر (Parameter): داده‌ای که به تابع برای پردازش داده می‌شود.


15. آرگومان (Argument): مقدار واقعی که هنگام فراخوانی تابع به پارامتر داده می‌شود.


16. بازگشت مقدار (Return): خروجی که تابع بعد از اجرا به برنامه برمی‌گرداند.


17. کلاس (Class): قالب یا ساختار برای تعریف اشیاء با ویژگی‌ها و رفتارها.


18. شیء (Object): نمونه‌ای از یک کلاس که داده و رفتار دارد.


19. ویژگی (Attribute): داده‌ای که به یک شیء یا کلاس تعلق دارد.


20. متد (Method): تابعی که داخل کلاس تعریف شده و روی شیء اجرا می‌شود.


21. وراثت (Inheritance): قابلیت یک کلاس برای به ارث بردن ویژگی‌ها و متدهای کلاس دیگر.


22. پلی‌مورفیسم (Polymorphism): قابلیت استفاده از یک نام متد برای عملکردهای متفاوت.


23. انکپسولیشن (Encapsulation): مخفی کردن داده‌ها و دسترسی فقط از طریق متدها.


24. ابسترکشن (Abstraction): نمایش تنها جزئیات مهم و پنهان کردن جزئیات پیچیده.


25. مفسر (Interpreter): برنامه‌ای که کد را خط به خط اجرا می‌کند.


26. کامپایلر (Compiler): برنامه‌ای که کل کد را به کد ماشین تبدیل و سپس اجرا می‌کند.


27. پایتون (Python): زبان برنامه‌نویسی سطح بالا، خوانا و چند منظوره.


28. سیستم‌عامل (OS): نرم‌افزاری که مدیریت منابع سخت‌افزاری و نرم‌افزاری را بر عهده دارد.


29. IDE: محیط توسعه یکپارچه برای نوشتن و اجرای برنامه.


30. سینتکس (Syntax): قوانین نوشتن صحیح کد در یک زبان برنامه‌نویسی.


31. کامنت (Comment): توضیحی در کد که توسط مفسر نادیده گرفته می‌شود.


32. حلقه (Loop): ساختاری برای اجرای تکراری یک بلوک کد.


33. شرط (Condition): بلوکی که اجرای کد را بسته به True یا False بودن تصمیم می‌گیرد.


34. برنامه (Program): مجموعه‌ای از دستورالعمل‌ها برای انجام کار مشخص.


35. الگوریتم (Algorithm): راه حل گام‌به‌گام برای حل یک مسئله.


36. پشته (Stack): ساختار داده‌ای که از قانون LIFO پیروی می‌کند.


37. صف (Queue): ساختار داده‌ای که از قانون FIFO پیروی می‌کند.


38. خطا (Error): مشکلی که مانع اجرای صحیح برنامه می‌شود.


39. استثناء (Exception): خطای قابل کنترل که می‌توان با try/except مدیریت کرد.


40. ماژول (Module): فایل پایتون با مجموعه‌ای از توابع و کلاس‌ها.


41. پکیج (Package): مجموعه‌ای از ماژول‌ها در یک دایرکتوری.


42. کتابخانه (Library): مجموعه آماده کدها برای استفاده در برنامه.


43. ورودی (Input): داده‌ای که از کاربر یا منبع دیگر دریافت می‌شود.


44. خروجی (Output): داده‌ای که توسط برنامه به کاربر یا سیستم داده می‌شود.


45. رابط کاربری (UI): نحوه تعامل کاربر با برنامه.


46. API: رابط برنامه‌نویسی برای ارتباط بین نرم‌افزارها.


47. IDE: محیط یکپارچه توسعه نرم‌افزار برای نوشتن، اجرا و دیباگ کد.


48. دیباگ (Debug): پیدا کردن و رفع خطاهای برنامه.


49. گیت (Git): سیستم کنترل نسخه برای مدیریت تغییرات کد.


50. کامیت (Commit): ذخیره تغییرات در سیستم کنترل نسخه مانند Git.
۱. پایتون پایه
انواع داده‌های پایه در پایتون کدام‌ها هستند و هر کدام چه کاربردی دارند؟
int (اعداد صحیح)، float (اعداد اعشاری)، str (رشته‌ها)، bool (True/False)، list، tuple، set، dict
تفاوت بین list و tuple چیست؟
list قابل تغییر (mutable)، tuple ثابت (immutable)
چگونه می‌توان یک شرط if چندگانه نوشت؟
if x > 0: print("Positive") elif x == 0: print("Zero") else: print("Negative")
تفاوت for و while در حلقه‌ها چیست؟
for برای تعداد مشخص تکرار، while تا وقتی شرط برقرار است
چگونه می‌توان یک تابع با پارامتر پیش‌فرض نوشت؟
def greet(name="Guest"): print(f"Hello {name}")
تفاوت بین return و print در توابع چیست؟
return مقدار را برمی‌گرداند، print فقط چاپ می‌کند
چگونه یک ماژول را در پایتون وارد (import) می‌کنیم؟
import math from math import sqrt
چه روش‌هایی برای خواندن و نوشتن فایل در پایتون وجود دارد؟
open("file.txt", "r") خواندن، open("file.txt", "w") نوشتن
چگونه می‌توان خطاها را با try-except مدیریت کرد؟
try: x = 1/0 except ZeroDivisionError: print("Cannot divide by zero")
تفاوت بین is و == چیست؟
== مقادیر را مقایسه می‌کند، is هویت (id) اشیا را
روش‌های تبدیل نوع داده‌ها (type casting) چیست؟
int(), float(), str(), bool()
تفاوت بین set و dict چیست؟
set مجموعه بدون تکرار، dict جفت کلید-مقدار
چه تفاوتی بین deep copy و shallow copy وجود دارد؟
shallow copy فقط مرجع را کپی می‌کند، deep copy داده‌ها را کپی می‌کند
چگونه می‌توان لیست‌ها را با لیست کامپرهنشن فشرده‌نویسی کرد؟
squares = [x**2 for x in range(5)]
تفاوت بین *args و **kwargs در توابع چیست؟
*args آرگومان‌های غیر کلیدی، **kwargs آرگومان‌های کلیدی
چگونه می‌توان یک رشته را به حروف بزرگ یا کوچک تبدیل کرد؟
"hello".upper() # "HELLO" "WORLD".lower() # "world"
چگونه می‌توان عناصر تکراری را از یک لیست حذف کرد؟
list(set([1,2,2,3])) # [1,2,3]
تفاوت بین .append(), .extend() و .insert() در لیست چیست؟
append: اضافه کردن یک عنصر،
extend: اضافه کردن چند عنصر،
insert: اضافه کردن در موقعیت مشخص
چگونه می‌توان چند رشته را با join ترکیب کرد؟
", ".join(["a","b","c"]) # "a, b, c"
روش‌های بررسی نوع داده‌ها در پایتون چیست؟
type(obj), isinstance(obj, type)
۲. پایتون پیشرفته و شیءگرایی (۱۵ سوال با جواب)
کلاس در پایتون چیست و چگونه تعریف می‌شود؟
class Person: def __init__(self, name): self.name = name
تفاوت بین class و object چیست؟
class قالب است، object نمونه (instance) کلاس
مفاهیم وراثت (Inheritance) در پایتون چگونه کار می‌کنند؟
class Student(Person): pass
مفهوم پلی‌مورفیسم (Polymorphism) را توضیح دهید.
متدها با نام یکسان در کلاس‌های مختلف رفتار متفاوت دارند
متدهای خاص (inititstrtr__) چه کاربردی دارند؟
init: م
قداردهی اولیه، str: نمایش رشته‌ای object
جنریتورها (Generators) چیستند و چه مزیتی دارند؟
تابعی که با yield مقدار می‌دهد، حافظه کم مصرف
تفاوت بین @staticmethod و @classmethod چیست؟
staticmethod به کلاس وابسته نیست، classmethod کلاس را دریافت می‌کند
دکوراتورها (Decorators) در پایتون چه کاربردی دارند؟
تابع را تغییر یا گسترش می‌دهند بدون تغییر کد اصلی
مفهوم encapsulation در شیءگرایی چیست؟
پنهان کردن جزئیات داخلی و محافظت از داده‌ها
چگونه می‌توان چند وراثت (Multiple Inheritance) را مدیریت کرد؟
با ترتیب کلاس‌ها در تعریف و استفاده از super()
تفاوت بین متدهای عمومی، خصوصی و محافظت‌شده چیست؟
عمومی: public، محافظت‌شده: _protected، خصوصی: __private
تفاوت بین کلاس abstract و concrete چیست؟
abstract کلاس ناقص، concrete کلاس کامل و قابل نمونه‌سازی
چگونه operator overloading در پایتون انجام می‌شود؟
class Point: def __add__(self, other): return Point(self.x + other.x, self.y + other.y)
مفهوم property و استفاده از آن در کلاس چیست؟
برای دسترسی به متغیرها با getter و setter بدون تغییر دسترسی
چگونه می‌توان حافظه را در شیءگرایی پایتون بهینه کرد؟
استslots_slots__، حذف reference غیرضروری
۳. کتابخانه‌های علمی (۱۵ سوال با جواب)
تفاوت بین NumPy array و لیست پایتون چیست؟
NumPy سریع‌تر و قابلیت عملیات برداری دارد
چگونه می‌توان یک آرایه NumPy ایجاد کرد؟
import numpy as np arr = np.array([1,2,3])
روش‌های عملیات برداری (vectorized operations) در NumPy چیست؟
arr + 1 # اضافه کردن 1 به تمام عناصر arr * 2 # ضرب عناصر
تفاوت بین DataFrame و Series در Pandas چیست؟
Series یک ستون است، DataFrame چندین ستون
چگونه می‌توان داده‌ها را در Pandas خواند و نوشت؟
import pandas as pd df = pd.read_csv("data.csv") df.to_csv("out.csv", index=False)
چگونه می‌توان ستون‌های یک DataFrame را انتخاب کرد؟
df['column_name'] df[['col1','col2']]
روش‌های فیلتر کردن داده‌ها در Pandas چیست؟
df[df['age'] > 30]
چگونه داده‌های گمشده (NaN) را مدیریت کنیم؟
df.dropna() df.fillna(0)
روش‌های ادغام (merge/join) DataFrameها چیست؟
pd.merge(df1, df2, on='id', how='inner')
تفاوت بین Matplotlib و Seaborn چیست؟
Matplotlib پایه‌ای، Seaborn ساده‌تر و زیباتر برای نمودارهای آماری
چگونه یک نمودار خطی ساده در Matplotlib رسم می‌کنیم؟
import matplotlib.pyplot as plt plt.plot([1,2,3], [4,5,6]) plt.show()
چگونه می‌توان یک نمودار هیستوگرام رسم کرد؟
plt.hist([1,2,2,3,3,3]) plt.show()
روش‌های سفارشی‌سازی نمودار در Matplotlib چیست؟
عنوان، رنگ، لیبل محور، سبک خط، اندازه figure
چگونه می‌توان با Seaborn نمودارهای پیچیده رسم کرد؟
import seaborn as sns sns.boxplot(x='category', y='value', data=df)
تفاوت بین plot, scatter و bar chart چیست؟
plot: خطی، scatter: نقاط، bar: میله‌ای
سوال بعدی را شامل یادگیری ماشین، شبکه‌های عصبی و مباحث پیشرفته AI همراه با پاسخ .


---

۴. یادگیری ماشین پایه (۲۰ سوال با جواب)

51. تفاوت بین یادگیری نظارت‌شده (Supervised) و بدون نظارت (Unsupervised) چیست؟



Supervised: داده‌ها برچسب دارند، مدل یاد می‌گیرد.

Unsupervised: داده‌ها بدون برچسب، مدل الگوها را پیدا می‌کند.


52. Linear Regression چیست و چه کاربردی دارد؟



مدل پیش‌بینی مقدار عددی با خط مستقیم برای کمینه کردن خطای میانگین مربعات (MSE).


53. Logistic Regression برای چه نوع مسأله‌ای استفاده می‌شود؟



برای دسته‌بندی دودویی (Binary Classification).


54. K-Nearest Neighbors (KNN) چگونه کار می‌کند؟



با بررسی نزدیک‌ترین k نمونه به نمونه جدید، کلاس آن را پیش‌بینی می‌کند.


55. Decision Tree چیست؟



مدل سلسله‌مراتبی تصمیم‌گیری که بر اساس ویژگی‌ها تقسیم می‌شود.


56. Random Forest چیست و چرا بهتر از Decision Tree است؟



مجموعه‌ای از درخت‌های تصمیم، خطای overfitting کمتر و دقت بیشتر.


57. Support Vector Machine (SVM) چه کاری انجام می‌دهد؟



خط یا صفحه‌ای پیدا می‌کند که دو کلاس را با بیشترین حاشیه جدا کند.


58. K-Means چیست؟



الگوریتم خوشه‌بندی بدون نظارت که داده‌ها را به k خوشه تقسیم می‌کند.


59. چگونه داده‌های متنی را برای مدل‌های ML آماده می‌کنیم؟



تبدیل به اعداد با روش‌هایی مثل TF-IDF، CountVectorizer، یا Embedding.


60. چگونه داده‌های عددی را استاندارد یا نرمال می‌کنیم؟



StandardScaler (میانگین صفر و واریانس یک) یا MinMaxScaler (۰ تا ۱).


61. Overfitting چیست و چگونه جلوگیری می‌کنیم؟



مدل بیش‌ازحد به داده‌های آموزش چسبیده، با Regularization، Cross-validation، Dropout جلوگیری می‌کنیم.


62. Cross-validation چیست؟



داده‌ها به چند بخش تقسیم می‌شوند، مدل چند بار آموزش و تست می‌شود تا دقت واقعی مشخص شود.


63. Precision و Recall چیست؟



Precision: درصد پیش‌بینی‌های درست مثبت نسبت به کل پیش‌بینی مثبت.

Recall: درصد پیش‌بینی‌های درست مثبت نسبت به کل نمونه‌های مثبت واقعی.


64. F1-score چیست؟



میانگین هارمونیک Precision و Recall.


65. Confusion Matrix چیست؟



جدول مقایسه پیش‌بینی مدل و داده واقعی شامل TP, TN, FP, FN.


66. Feature Selection چیست؟



انتخاب ویژگی‌های مهم برای کاهش پیچیدگی و افزایش دقت.


67. Feature Engineering چیست؟



ساخت ویژگی‌های جدید یا تغییر داده‌ها برای بهبود مدل.


68. Grid Search و Random Search چه کاری انجام می‌دهند؟



بهینه‌سازی هایپرپارامترهای مدل.


69. Regularization چیست و انواع آن کدام است؟



کاهش Overfitting با اضافه کردن جریمه به ضرر: L1 (Lasso)، L2 (Ridge).


70. ROC Curve چیست و چه کاربردی دارد؟



نمایش trade-off بین True Positive Rate و False Positive Rate برای ارزیابی مدل دسته‌بندی.



---

۵. شبکه‌های عصبی و Deep Learning (۱۵ سوال با جواب)

71. شبکه عصبی مصنوعی (ANN) چیست؟



مدل الهام‌گرفته از مغز، شامل لایه‌های ورودی، پنهان و خروجی با نورون‌ها.


72. Activation Function چیست؟



توابعی که خروجی نورون را غیرخطی می‌کنند، مثل ReLU، Sigmoid، Tanh.


73. Loss Function چیست؟



تابعی که خطای پیش‌بینی مدل را اندازه می‌گیرد، مثل MSE، Cross-Entropy.


74. Optimizer چیست و چه کاری انجام می‌دهد؟



الگوریتم به‌روزرسانی وزن‌ها برای کمینه کردن خطا، مثل SGD، Adam.


75. Feedforward Neural Network چیست؟



شبکه‌ای که اطلاعات فقط به جلو (input→output) حرکت می‌کنند، بدون حلقه.


76. Backpropagation چیست؟



الگوریتم محاسبه گرادیان برای به‌روزرسانی وزن‌ها با استفاده از زنجیره مشتق.


77. Convolutional Neural Network (CNN) برای چه کاربردی است؟



پردازش تصویر، تشخیص اشیا و ویژگی‌های محلی تصویر.


78. Pool Layer در CNN چه کاری انجام می‌دهد؟



کاهش ابعاد داده‌ها و نگه داشتن ویژگی‌های مهم (MaxPooling, AvgPooling).


79. Recurrent Neural Network (RNN) چه کاربردی دارد؟



پردازش داده‌های دنباله‌ای مثل متن یا سری‌های زمانی.


80. LSTM چیست و چرا بهتر از RNN ساده است؟



Long Short-Term Memory، مشکل vanishing gradient را حل می‌کند.


81. Dropout چیست و چرا استفاده می‌شود؟



غیرفعال کردن تصادفی نورون‌ها در آموزش برای کاهش Overfitting.


82. Batch Normalization چیست؟



نرمال‌سازی لایه‌ها برای آموزش سریع‌تر و پایدارتر.


83. Epoch و Batch چیست؟



Epoch: کل داده‌ها یکبار آموزش داده می‌شوند، Batch: بخش کوچکی از داده‌ها برای یک قدم آموزش.


84. Transfer Learning چیست؟



استفاده از مدل آموزش دیده برای کار جدید با داده کمتر.


85. Early Stopping چیست؟
توقف آموزش وقتی مدل روی داده اعتبارسنجی بهتر نمی‌شود تا Overfitting جلوگیری شود.



---

۶. ارزیابی مدل و بهینه‌سازی (۱۰ سوال با جواب)

86. Accuracy چیست؟



نسبت پیش‌بینی‌های درست به کل پیش‌بینی‌ها.


87. Precision و Recall چه کاربردی در تشخیص بیماری دارند؟



Precision: درصد بیمارانی که درست تشخیص داده شده‌اند،

Recall: درصد واقعی بیماران که مدل شناسایی کرده.


88. Cross-validation چه مزیتی دارد؟



ارزیابی دقیق‌تر مدل و کاهش وابستگی به تقسیم داده.


89. Overfitting و Underfitting چه تفاوتی دارند؟



Overfitting: آموزش زیاد، تست ضعیف،

Underfitting: مدل ساده، آموزش و تست ضعیف.


90. Grid Search برای چه استفاده می‌شود؟



پیدا کردن بهترین هایپرپارامترها.


91. Random Search چیست؟



تست تصادفی ترکیبات مختلف هایپرپارامتر.


92. Learning Rate چیست؟



سرعت تغییر وزن‌ها در هر قدم آموزش.


93. Confusion Matrix شامل چه مواردی است؟



True Positive, True Negative, False Positive, False Negative.


94. ROC-AUC چیست؟



مساحت زیر منحنی ROC برای ارزیابی مدل دسته‌بندی.


95. Bias و Variance چیست؟



Bias: خطای مدل ساده، Variance: حساسیت به داده‌ها



---

۷. مباحث پیشرفته AI (۵ سوال با جواب)

96. Reinforcement Learning چیست؟



یادگیری با پاداش و مجازات برای گرفتن بهترین تصمیم در محیط.


97. Q-Learning چیست؟



الگوریتم RL برای یادگیری بهترین عمل در هر حالت بدون مدل محیط.


98. Transfer Learning چه مزیتی دارد؟



کاهش زمان آموزش و داده مورد نیاز با استفاده از مدل از قبل آموزش دیده.


99. NLP (پردازش زبان طبیعی) چیست؟



پردازش و تحلیل متن و زبان با کامپیوتر.


100. Word Embedding چیست؟



تبدیل کلمات به بردارهای عددی که شباهت معنایی را حفظ می‌کنند، مثل Word2Vec یا GloVe.



-
Channel name was changed to «آموزش برنامه‌نویسی پایتون و هوش مصنوعی»
چرا یادگیری پایتون و هوش مصنوعی در دنیای امروز ضروری است؟

در دنیای امروز، آشنایی با زبان‌های برنامه‌نویسی به یک مهارت پایه تبدیل شده است؛ همان‌طور که دانستن زبان انگلیسی در گذشته، مسیر رشد و پیشرفت بسیاری از افراد را هموار کرد، امروز نیز یادگیری زبان‌هایی مانند پایتون، نقش کلیدی در موفقیت شغلی و علمی ایفا می‌کند.




🐍 پایتون چیست و چرا اهمیت دارد؟

پایتون یکی از محبوب‌ترین زبان‌های برنامه‌نویسی در جهان است.
سادگی سینتکس، خوانایی بالا و قدرت گسترده در توسعه انواع پروژه‌ها، این زبان را به انتخابی عالی برای مبتدیان و حرفه‌ای‌ها تبدیل کرده است.

پشت این سادگی، قدرتی بزرگ نهفته است؛ چرا که پایتون، ابزار اصلی بسیاری از حوزه‌های نوین فناوری است، از جمله:

🔹 هوش مصنوعی و یادگیری ماشین
🔹 علم داده (Data Science) و تحلیل اطلاعات
🔹 توسعه وب (Back-end Development)
🔹 اتوماسیون، رباتیک و برنامه‌نویسی سیستم
🔹 پژوهش‌های دانشگاهی و پروژه‌های بین‌المللی



🎯 یادگیری پایتون، دروازه‌ای است به دنیای آینده

با توجه به سرعت رشد فناوری و نیاز بازار کار به نیروهای متخصص در زمینه‌های داده‌محور و هوش مصنوعی، یادگیری پایتون نه‌تنها یک انتخاب هوشمندانه، بلکه یک سرمایه‌گذاری بلندمدت روی آینده شغلی شماست.



👨‍🏫 مدرس دوره:
یاسر محمودیان
کارشناس ارشد کامپیوتر – مدرس هوش مصنوعی و برنامه‌نویسی

🎓 مخاطبان دوره:
دانش‌آموزان، دانشجویان و علاقه‌مندان به یادگیری برنامه‌نویسی
(بدون نیاز به پیش‌زمینه قبلی)

📚 دوره‌ها به صورت:
خصوصی، نیمه‌خصوصی، کارگاه و وبینار
قابل برگزاری برای مدارس، دانشگاه‌ها، مؤسسات و سازمان‌ها




📲 جهت ثبت‌نام و دریافت اطلاعات بیشتر با ما در ارتباط باشید:

🔹 تلگرام و روبیکا: @PyPlus_Admin
🔹 ایتا: @learns_py
🔹 اینستاگرام: instagram.com/learns.py
🌺دوستان عزیزی که تمایل دارند به دوره ملحق شوند، در صورتی که بتوانند جلسات برگزارشده‌ی قبلی را جبران کرده و با روند کلاس هماهنگ شوند، امکان شرکت در دوره برایشان فراهم است.