Get Mystery Box with random crypto!

#آموزشی خیلیا هم گفته بودن که تفاوت == و is توی پایتون چیه | iRLords

#آموزشی

خیلیا هم گفته بودن که تفاوت == و is توی پایتون چیه

خب همونطور که میدونید هر متغیر توی پایتون یک آدرس حافظه داره که مقادیر متغیر توی اون ادرس از حافظه سیستم ما ذخیره میشن.

خب شما وقتی میگید
x = 10
بطور مثال این 10 توی آدرس 10914784 ذخیره میشه


شما وقتی دارید از == استفاده میکنید در اصل با مقدار اون متغیر سر و کار دارید

یعنی وقتیکه شما میگید
print(x == y)

یعنی دارید میگید برو به آدرسی که مقدار x توش ذخیره شده بگیرش و بیار بزارش بجای x و همین کار رو برای y هم انجام بده
بر فرض x ما برابر 10 و y ما برابر 20 هستش

پس همچین چیزی دارید میگید
print(10 == 20)
که خروجی این میشه False چون 10 با 20 یکی نیست.

خب حالا is چیکار میکنه؟
همون کد بالارو مثال میزنیم
فرض کنید x ما برابر با 10
و y ما برابر با 20 هستش!

print(x is y)

خب این is دیگه نمیگه که برو مقادیر x و y رو بگیر بیار بزار اینجا و ببین یکی هستن یا خیر

میگه برو ببین اگر مقدار x توی همون آدرس حافظه ای که مقدار y ذخیره شده ، ذخیره شده بود مقدار True رو برگردون
و در غیر این صورت False رو برگردون

خب چطور میشه که دوتا متغیر توی یک آدرس از حافظه ذخیره میشن؟؟
این کد رو ببینید
x = y = "hello world"
الآن هر دو متغیر x و y مقدار hello رو دارن و هردو متغیر به یک آدرس از حافظه اشاره میکنن
چطور باید بفهمیم؟
با متد id میتونید بفهمید که کدوم متغیر به چه ادرسی از حافظه داره اشاره میکنه

مثلاً
x = y = "hello world"
print(id(x))
print(id(y))

الآن هردو خروجی یک عدد هستن و باهم فرقی ندارن چونکه هر دو متغیر به یک ادرس از حافظه اشاره میکنن

یعنی is میاد این کارو میکنه :
x = y = "hello world"
print(id(x) == id(y))
خب حالا برای اینکه ما زیاده کاری نکنیم میایم میگیم
x = y = "hello world"
print(x is y)
هر دو کد باهم یکسان هستن و یک کار رو انجام میدن


پس فهمیدیم که == میاد مقادیر متغیر هارو چک میکنه که باهم یکسان هستن یا خیر

و is میاد چک میکنه که آیا دو متغیر به یک آدرس از حافظه اشاره میکنن یا خیر

موفق باشید