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

September 2019

استفاده از آبجکت های 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)

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

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

ارسال نظر

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