بیژن حجازی
بیژن حجازی
خواندن ۲ دقیقه·۳ سال پیش

Unpacking در پایتان

منظور از unpacking قرار دادن مقادیر یک iterable داخل چند تا متغیر جداست.
منظور از unpacking قرار دادن مقادیر یک iterable داخل چند تا متغیر جداست.

مقدمه

یکی از ویژگی های دوست داشتنی پایتان اینه که میشه یک iterable (منظور از iterable متغیر هایی مثل list ها هستن که میشه توشون چرخید با for ... in) رو تبدیل به متغیر های تک به تک کرد. به این مبحث میگن unpacking که همون طوری هم از اسمش معلومه یعنی از بسته بندی باز کردن.

مثال

با یک مثال بریم جلو. فرض کن یک tuple داریم مثل زیر:

nums = (1,2,3)

حالا اگه دوست داشته باشیم به جای یک tuple یا ۳ عضو، سه متغیر داشته باشیم؟! مثلا میشه این طوری کد زد:

a = nums[0] b = nums[1] c = nums[2]

ولی خوب پایتان یک بزرگواری کرده و این قابلیت رو به ما داده که ۳ خط کد بالا رو توی یک خط بنویسیم!

a, b, c = nums

در خصوص unpacking دو نکته مهم مطرحه:

  • تعداد اعضای مقداری که قراره unpack بشه (تو این مثال توپل nums) باید با تعداد متغیر های سمت چپ برابر باشه در غیر این صورت Traceback میده!
  • دقت کن که هر iterable ای می تونه unpack بشه. حتی dict ها هم می تونن unpack بشن.

استفاده از *

حالا فرض کن که یک list دارم با ۱۰ تا عضو (مثلا اعداد ۱ تا ۱۰) و میخایم که عدد 1 روی توی a ذخیره کنیم و بقیه اعداد رو توی other. تو این شرایط باید از * (بچه ها اسم این علامت asterisk عه) کمک بگیریم:

nums = [1,2,3,4,5,6,7,8,9,10] a, *others = nums

در این حالت جنس متغیر others مثل جنس متغیر unpack شده خواهد بود. میشه که متغیر ستاره دار رو وسط متغیر ها هم قرار داد:

nums = [1,2,3,4,5,6,7,8,9,10] a, *other, b = nums

در مثال بالا b برابر با ۱۰ و a برابر با ۱ خواهد شد و others میشه list ای از ۲ تا ۹!

نتیجه گیری

استفاده از unpacking تو کد های پایتان چیز رایجی هست. جدا از این که خیلی راحت و ساده است خیلی هم لذت بخشه استفاده ازش. امیدوارم از این مقاله خوشت اومده باشه. اگه نکته ای مونده که ذکر نکرده باشم خوشحال میشم تو کامنت ها بهم بگی.

برنامه نویسیپایتانپایتونکد نویسیتوسعه وب
سلام! نوشتن به منزله مطالعه «خود» هست. من بیشتر تو زمینه برنامه نویسی و روان شناسی مطلب میذارم. خوشحال میشم نظرات تون رو باهام در میون بذارین.
شاید از این پست‌ها خوشتان بیاید