استفاده از آبجکت های mutable به عنوان مقدار پیشفرض آرگومان ها در پایتون

استفاده از آبجکت های mutable به عنوان مقدار پیشفرض آرگومان ها در پایتون کار اشتباهی بوده و نتایج غیر منتظره ای هم به دنبال خواهد داشت

من یه دونه فانکشن مینویسم به شکل زیر:

def show(name, age, height):
   print(name, age, height)
   
   
show('amir', 28, 180)

همونطور که مشخصه فانکشن show سه تا مقدار میگیره و اونها رو چاپ میکنه. در خط آخر هم اون فانکشن رو صدا زدم و سه تا مقدار رو بهش فرستادم. اگه این فانکشن رو اجرا کنید سه تا مقدار به درستی چاپ میشن.
حالا فکر کنید اطلاعات ما داخل یک لیست هستش و ما قراره اطلاعاتی که قراره به اون فانکشن بفرستیم رو باید از داخل اون لیست در میاوردیم. به شکل زیر:

x = ['amir', 28, 180]

show(x[0], x[1], x[2])

در خط اول اطلاعاتمون داخل یک لیست هستش و در خط آخر اون اطلاعات رو فرستادیم به فانکشن.
اما روشی که بالا دیدید آنچنان پایتونی نیسش و راه حل بهتری وجود داره برای این کار:

show(*x)

به همین سادگی. با استفاده از علامت ستاره اطلاعات داخل لیست x باز میشن و بین آرگومان های فانکشن به ترتیب تقسیم میشن. این از این.
حالا اگه اطلاعاتمون داخل یه دیکشنری بود چی؟ مثل زیر:

x = {'name':'amir', 'age':28, 'height':18}

برای اینکه اطلاعات رو از داخل یه دیکشنری بکشید بیرون به روش زیر کار کنید:
 

show(**x)

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

برای اطلاعات بیشتر ویدیو رو تماشا کنید