🔆 خروجی این تکه کد چیه؟
🔹گزینهها:
الف) [1], [2], [9, 9, 3], [4]
ب) [1], [1, 2], [9, 9, 3], [1, 2, 4]
ج) [1], [2], [3], [4]
🐍 @python_rd
def add_item(item, lst=[]):
lst.append(item)
return lst
print(add_item(1))
print(add_item(2))
print(add_item(3, [9, 9]))
print(add_item(4))
🔹گزینهها:
الف) [1], [2], [9, 9, 3], [4]
ب) [1], [1, 2], [9, 9, 3], [1, 2, 4]
ج) [1], [2], [3], [4]
🐍 @python_rd
🔆 چرا برای دادههای حجیم نباید از return استفاده کنی؟
🔹 وقتی یک تابع لیست بزرگی از دادهها رو با return برمیگرداند، کل دادهها باید همزمان توی رم (RAM) لود بشن که باعث مصرف شدید حافظه و کندی سیستم میشه.
🔹 اما اگر به جای return از yield استفاده کنی، تابع تبدیل به یک Generator میشه که دادهها رو به صورت تکبهتک و تنبل (Lazy Evaluation) تولید میکنه:
🔹با این روش میتونی فایلهای چند گیگابایتی رو با مصرف چند مگابایت رم پردازش کنی!
🐍 @python_rd
🔹 وقتی یک تابع لیست بزرگی از دادهها رو با return برمیگرداند، کل دادهها باید همزمان توی رم (RAM) لود بشن که باعث مصرف شدید حافظه و کندی سیستم میشه.
🔹 اما اگر به جای return از yield استفاده کنی، تابع تبدیل به یک Generator میشه که دادهها رو به صورت تکبهتک و تنبل (Lazy Evaluation) تولید میکنه:
def read_large_file(file_path):
with open(file_path, 'r') as f:
for line in f:
yield line.strip() # هر بار فقط یک خط را در حافظه نگه میدارد
🔹با این روش میتونی فایلهای چند گیگابایتی رو با مصرف چند مگابایت رم پردازش کنی!
🐍 @python_rd