PyPlus: نکات ریز پایتون ۵۱ تا ۱۰۰
۵۱. unpack کردن لیست داخل توابع
۵۲. unpack کردن دیکشنری داخل توابع
۵۳. نامگذاری متغیرهای داخلی کلاس با self
۵۴. property برای getter/setter
۵۵. حذف آیتم از dict با pop
۵۶. defaultdict از collections
۵۷. Counter از collections
۵۸. namedtuple
۵۹. OrderedDict
۶۰. setdefault
۶۱. شبیهساز ATM (مثال پروژه کوچک)
۶۲. بررسی نوع داده
۶۳. isinstance
۶۴. getattr, setattr, delattr
۶۵. eval و exec (با احتیاط)
۶۶. import جزئی
۶۷. import چندگانه
۶۸. sys.argv برای پارامترها
۶۹. unpack کردن چند متغیر با *
۷۰. tuple packing/unpacking
۷۱. swap بدون temp
۷۲. فیلتر کردن لیست
۷۳. map
۷۴. reduce
۷۵. itertools برای ترکیب و permutation
۷۶. generator expression
۷۷. yield
۷۸. جمع کردن دیکشنریها
۷۹. slicing پیشرفته
۸۰. negative step
۸۱. string formatting قدیمی
۸۲. multi-line string با \
۸۳. bytes و bytearray
۸۴. assert
۸۵. ternary در list comprehension
۸۶. else بعد از try
۸۷. finally
۸۸. chaining exceptions
۸۹. assert vs raise
۹۰. import from package
۹۱. module alias
۹۲. global keyword
۹۳. nonlocal keyword
۹۴. closures
۹۵. partial functions
۵۱. 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 سفارشی
۹۷. comprehension nested
۹۸. walrus operator :=
۹۹. type hint پیشرفته
۱۰۰. f-string پیشرفته
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 و... استفاده میکنی.
.
---
۱. تفاوتهای 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 است، خط به خط اجرا میشود.
---
۵۰ نکته مهم و ریز در پایتون
---
۱. بدون {} یا ;
پایتون برای بلوکها به جای آکولاد از تورفتگی استفاده میکند.
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: تابع سازنده کلاس.
---
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: جمعآوری خودکار حافظه بلااستفاده توسط پایتون.
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)
---
---
۲۰ نکتهی مهم پایتون با مثال
۱. پایتون مفسری (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)
---
با 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)
برخلاف 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))
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.
---
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 چندگانه نوشت؟
تفاوت for و while در حلقهها چیست؟
for برای تعداد مشخص تکرار، while تا وقتی شرط برقرار است
چگونه میتوان یک تابع با پارامتر پیشفرض نوشت؟
تفاوت بین return و print در توابع چیست؟
return مقدار را برمیگرداند، print فقط چاپ میکند
چگونه یک ماژول را در پایتون وارد (import) میکنیم؟
چه روشهایی برای خواندن و نوشتن فایل در پایتون وجود دارد؟
open("file.txt", "r") خواندن، open("file.txt", "w") نوشتن
چگونه میتوان خطاها را با try-except مدیریت کرد؟
تفاوت بین is و == چیست؟
== مقادیر را مقایسه میکند، is هویت (id) اشیا را
روشهای تبدیل نوع دادهها (type casting) چیست؟
int(), float(), str(), bool()
تفاوت بین set و dict چیست؟
set مجموعه بدون تکرار، dict جفت کلید-مقدار
چه تفاوتی بین deep copy و shallow copy وجود دارد؟
shallow copy فقط مرجع را کپی میکند، deep copy دادهها را کپی میکند
چگونه میتوان لیستها را با لیست کامپرهنشن فشردهنویسی کرد؟
تفاوت بین *args و **kwargs در توابع چیست؟
*args آرگومانهای غیر کلیدی، **kwargs آرگومانهای کلیدی
چگونه میتوان یک رشته را به حروف بزرگ یا کوچک تبدیل کرد؟
چگونه میتوان عناصر تکراری را از یک لیست حذف کرد؟
تفاوت بین .append(), .extend() و .insert() در لیست چیست؟
append: اضافه کردن یک عنصر،
extend: اضافه کردن چند عنصر،
insert: اضافه کردن در موقعیت مشخص
چگونه میتوان چند رشته را با join ترکیب کرد؟
روشهای بررسی نوع دادهها در پایتون چیست؟
type(obj), isinstance(obj, type)
۲. پایتون پیشرفته و شیءگرایی (۱۵ سوال با جواب)
کلاس در پایتون چیست و چگونه تعریف میشود؟
تفاوت بین class و object چیست؟
class قالب است، object نمونه (instance) کلاس
مفاهیم وراثت (Inheritance) در پایتون چگونه کار میکنند؟
مفهوم پلیمورفیسم (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 در پایتون انجام میشود؟
مفهوم property و استفاده از آن در کلاس چیست؟
برای دسترسی به متغیرها با getter و setter بدون تغییر دسترسی
چگونه میتوان حافظه را در شیءگرایی پایتون بهینه کرد؟
استslots_slots__، حذف reference غیرضروری
۳. کتابخانههای علمی (۱۵ سوال با جواب)
تفاوت بین NumPy array و لیست پایتون چیست؟
NumPy سریعتر و قابلیت عملیات برداری دارد
چگونه میتوان یک آرایه NumPy ایجاد کرد؟
روشهای عملیات برداری (vectorized operations) در NumPy چیست؟
انواع دادههای پایه در پایتون کدامها هستند و هر کدام چه کاربردی دارند؟
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 چیست؟
---
۴. یادگیری ماشین پایه (۲۰ سوال با جواب)
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.
-
---
۶. ارزیابی مدل و بهینهسازی (۱۰ سوال با جواب)
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
در دنیای امروز، آشنایی با زبانهای برنامهنویسی به یک مهارت پایه تبدیل شده است؛ همانطور که دانستن زبان انگلیسی در گذشته، مسیر رشد و پیشرفت بسیاری از افراد را هموار کرد، امروز نیز یادگیری زبانهایی مانند پایتون، نقش کلیدی در موفقیت شغلی و علمی ایفا میکند.
🐍 پایتون چیست و چرا اهمیت دارد؟
پایتون یکی از محبوبترین زبانهای برنامهنویسی در جهان است.
سادگی سینتکس، خوانایی بالا و قدرت گسترده در توسعه انواع پروژهها، این زبان را به انتخابی عالی برای مبتدیان و حرفهایها تبدیل کرده است.
پشت این سادگی، قدرتی بزرگ نهفته است؛ چرا که پایتون، ابزار اصلی بسیاری از حوزههای نوین فناوری است، از جمله:
🔹 هوش مصنوعی و یادگیری ماشین
🔹 علم داده (Data Science) و تحلیل اطلاعات
🔹 توسعه وب (Back-end Development)
🔹 اتوماسیون، رباتیک و برنامهنویسی سیستم
🔹 پژوهشهای دانشگاهی و پروژههای بینالمللی
🎯 یادگیری پایتون، دروازهای است به دنیای آینده
با توجه به سرعت رشد فناوری و نیاز بازار کار به نیروهای متخصص در زمینههای دادهمحور و هوش مصنوعی، یادگیری پایتون نهتنها یک انتخاب هوشمندانه، بلکه یک سرمایهگذاری بلندمدت روی آینده شغلی شماست.
👨🏫 مدرس دوره:
یاسر محمودیان
کارشناس ارشد کامپیوتر – مدرس هوش مصنوعی و برنامهنویسی
🎓 مخاطبان دوره:
دانشآموزان، دانشجویان و علاقهمندان به یادگیری برنامهنویسی
(بدون نیاز به پیشزمینه قبلی)
📚 دورهها به صورت:
✅ خصوصی، نیمهخصوصی، کارگاه و وبینار
✅ قابل برگزاری برای مدارس، دانشگاهها، مؤسسات و سازمانها
📲 جهت ثبتنام و دریافت اطلاعات بیشتر با ما در ارتباط باشید:
🔹 تلگرام و روبیکا: @PyPlus_Admin
🔹 ایتا: @learns_py
🔹 اینستاگرام: instagram.com/learns.py
🌺دوستان عزیزی که تمایل دارند به دوره ملحق شوند، در صورتی که بتوانند جلسات برگزارشدهی قبلی را جبران کرده و با روند کلاس هماهنگ شوند، امکان شرکت در دوره برایشان فراهم است.
This media is not supported in your browser
VIEW IN TELEGRAM
from turtle import *
from colorsys import *
pensize(4)
bgcolor('black')
tracer(20)
h = 0
for i in range(240):
c = hsv_to_rgb(h, 1, 1)
h += 0.005
color(c)
fillcolor('black')
begin_fill()
fd(i / 2)
rt(30)
fd(i)
rt(120)
rt(1020013)
end_fill()
done()
from colorsys import *
pensize(4)
bgcolor('black')
tracer(20)
h = 0
for i in range(240):
c = hsv_to_rgb(h, 1, 1)
h += 0.005
color(c)
fillcolor('black')
begin_fill()
fd(i / 2)
rt(30)
fd(i)
rt(120)
rt(1020013)
end_fill()
done()