برنامه‌نویسی comma.code | computer| کاما کد|
2.67K subscribers
23 photos
64 videos
9 files
93 links
به ⭐️کانال کاما کد⭐️ خوش اومدی؛ جایی که کدها زنده میشن و ایدهها به واقعیت تبدیل میشدن! 🚀 چه تازهکار باشی و چه حرفه ای، اینجا کلی چیز منتظرته

حرفی سخنی انتقادی: @ir_379
Download Telegram
یه نکته جالب❗️

می‌دونستید تو پایتون اگر مقدار پیش‌فرض یک پارامتر از نوع تغییرپذیر (mutable) باشه، مثل لیست یا دیکشنری، این مقدار فقط یک بار زمان اجرای دستور def ارزیابی می‌شه؟ بعد از اون، هر بار تابع رو بدون دادن اون آرگومان فراخوانی کنیم، پارامتر به همان شیء قبلی اشاره می‌کنه و از نو ساخته نمیشه

مثال:

def add(item, items={}):
items[item] = 0
return items

print(add("1"))
print(add("2"))
print(add("3"))

خروجی:

{'1': 0}
{'1': 0, '2': 0}
{'1': 0, '2': 0, '3': 0}

چون {} فقط یک بار در زمان تعریف تابع ساخته شده و همون دیکشنری بین فراخوانی‌ها باقی می‌مونه

برای دیدن این موضوع می‌تونیم id رو چاپ کنیم:

def add(item, items={}):
items[item] = 0
return id(items)

print(add("1"))
print(add("2"))
print(add("3"))

هر سه عدد یکی هستن، چون هر بار همون شیء دیکشنری برگردونده می‌شه

حالا اگر می‌خوایم هر بار مقدارمون خالی و تازه باشه چیکار کنیم؟

راه درست اینکه مقدار پیش‌فرض رو None بذاریم و داخل تابع، در صورت None بودن، دیکشنری جدید بسازیم:

def add(item, items=None):
if items is None:
items = {}
items[item] = 0
return items

یا اگر لازم نیست دیکشنری از بیرون به تابع پاس داده بشه، اون رو داخل خود تابع بسازیم:

def add(item):
items = {}
items[item] = 0
return items



@comma_code
@comma_code
#کاما_کد #فانکشن #پایتون
#function #mutable #comma_code #python
❤6🔥1