سلام دوستان. امیدوارم امتحانات رو به خوبی پشت سر گذاشته باشید هرچند می دونم دل خیلی هاتون خونه ... (مخصوصا اونهایی که امتحان حضوری داشتن)
چند وقت پیش به یک کد پایتون برخورد کردم که همچین ساختاری داشت:
items = [1] item ,= items
آیا می تونید حدس بزنید که مقدار item الان چیه؟ ساده است، فقط کافیه که این کد ها رو در ترمینال بزنید و بعد مقدار item رو print کنید
print (item) #1
همون طور که می بینید متغیر item مقدارش 1 است. اما چطور چنین چیزی اتفاق می افته؟ =, دیگه چیه؟
وقتی که شما بخواهید آیتم های یک لیست رو به ترتیب در متغیر های مستقل ذخیره کنید از list unpacking استفاده می کنید. به نمونه زیر نگاه کنید:
numbers = [1, 2, 3] one, two, three = numbers
در مثال بالا می بینید که لیست ما شامل 3 عدد است و 3 متغیر به ازای هر کدام تعریف شده است. اما در اینجا یک مورد استثناء وجود داره. چه می شه اگر list ما فقط 1 عضو داشته باشه و ما بخواهیم از list unpacking استفاده کنیم؟ قطعا نمی توانیم بدین شکل مقدار تنها عضو داخل list رو در یک متغیر مستقل ذخیره کنیم:
numbers = [1] one = numbers # creates a reference to `numbers`, `one` is a list not an int
پس راه حل این قضیه چیه؟ یه راه حل ممکن اینه که از list slicing استفاده کنیم:
one = numbers[0]
راه حل تمیز و خوانایی هست ولی یه راه حل غیر معمول دیگه هم هست:
one, = numbers
درست متوجه شدید، اون "," که بعد از one قرار گرفته صرفا به خاطر اینه مفسر پایتون بتونه تشخیص بده که ما یک reference به numbers نمی خواهیم بلکه می خواهیم مقدار اولین عضوش رو در متغیر one ذخیره کنیم.
البته این تنها استفاده "," (کاما) در پایتون نیست و در بعضی سناریو های دیگه هم از کاما برای فهموندن موارد مشابه به پایتون استفاده می کنیم. مثلا توی پایتون می تونید string ها رو به این صورت هم بنویسید
("this is a string" "this is another string" "this is just an example") # notice that there is no "," between strings
چیزی که اتفاق می افته اینه که 3 string بالا به هم وصل میشن و 1 string واحد رو تشکیل میدن. به خاطر همین عبارت زیر یک tuple محسوب نمیشه بلکه یک string هست
test = ("this is going to be a string not a tuple") print (type (test)) #<class 'str'>
حالا فقط کافیه که یک کاما بعد string در پرانتز اضافه کنیم که مفسر پایتون متوجه بشه که این یک tuple هست.
test = ("this is going to be a tuple",) print (type (test)) #<class 'tuple'>
همچنین درمورد اعداد هم باید همین طور عمل کنید:
i = (1) # int i = (1,) # tuple
خوب دوستان به انتهای پست رسیدیم. خیلی ممنون که وقتتون رو گذاشتید و این مطلب رو خوندید. اگه خوشتون اومد حتما لایک کنید و اگه سوال، پیشنهاد یا انتقادی داشتید در کامنت ها اطلاع بدید.
شاید از نوشته های دیگه ام هم خوشتون بیاد: