TGViewer
PyCoders (پایتون) PyCoders (پایتون) @python_rd · 4.11K subscribers
Post #2194 585
🔆 اشتباه رایج در پایتون: لیست‌های "سرسخت"!

🔹 خیلی از بچه‌ها موقع تعریف تابع، از لیست یا دیکشنری به عنوان آرگومان پیش‌فرض استفاده می‌کنن که باعث میشه باگ‌های عجیب و غریبی توی پروژه پیش بیاد.

🔹داستان اینه: پایتون آرگومان پیش‌فرض رو فقط یک‌بار (موقع تعریف تابع) می‌سازه، نه هر بار که تابع رو صدا می‌زنی. نتیجه‌ش این میشه که لیستِ شما بین تمام فراخوانی‌ها مشترک می‌مونه!

🔹 کد غلط (باگ‌دار):
def add_item(val, my_list=[]):
my_list.append(val)
return my_list

print(add_item(1)) # خروجی: [1]
print(add_item(2)) # خروجی: [1, 2] !!!

🔹کد درست (پایتونیک):

همیشه از None استفاده کن و مقداردهی رو داخل تابع انجام بده:

def add_item(val, my_list=None):
if my_list is None:
my_list = []
my_list.append(val)
return my_list

print(add_item(1)) # خروجی: [1]
print(add_item(2)) # خروجی: [2]

🔹 این یه نکته‌ی ساده ولی حیاتیه که کدت رو از یه کدِ آماتوری به یه کدِ حرفه‌ای تبدیل می‌کنه.

🐍 @python_rd
  • ❤ 2
More from @python_rd
  1. Oct 13, 2026کوییز پایتون 🔆 خروجی اجرای کد زیر چیست؟ t = (1, 2, [3, 4]) try: t[2] += [5] except TypeEr…
  2. Oct 13, 2026🔆 راز مکانیزم پیاده‌سازی و تغییر جهت NaN در الگوریتم مرتب‌سازی پایتون (Timsort) 🔹 باگ ری…
  3. Oct 13, 2026🔆 حذف تاریخی GIL از پایتون (Free-threaded Python) 🔹 یک رویداد تاریخی: حذف قفل مفسر (GIL)…
  4. Oct 11, 2026🔆 مدیریت تمیز منابع با Context Managerهای سفارشی (contextlib) 🔹 ساخت Context Managerها م…
  5. Oct 10, 2026🔆 چرا برای داده‌های حجیم نباید از return استفاده کنی؟ 🔹 وقتی یک تابع لیست بزرگی از داده‌…
  6. Oct 10, 2026🔆 خروجی این تکه کد چیه؟ def add_item(item, lst=[]): lst.append(item) return lst print(add…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →