چالش روزانه · ۱۶ آبان ۱۴۰۵

چالش پایتون ۲۰: == یا is؟

قبل از اجرای کد، خروجی آن را پیش‌بینی کن. حدس نزن؛ خط به خط فکر کن پایتون چه می‌کند.

a = [1, 2]
b = [1, 2]
c = a
print(a == b, a is b, a is c)
خروجی این کد چیست؟

نمایش پاسخ و توضیح

پاسخ درست: گزینهٔ د — True False True

گام به گام

  • == محتوا را مقایسه می‌کند: آیا عنصرها یکی‌اند؟
  • is هویت را مقایسه می‌کند: آیا هر دو نام به همان شیء در حافظه اشاره می‌کنند؟
a == b  →  True    (محتوای یکسان)
a is b  →  False   (دو لیست جدا در حافظه)
a is c  →  True    (c فقط نام دوم a است)

جواب: True False True

کِی is بنویسیم؟

تقریباً همیشه ==. تنها جای رایج is مقایسه با None است: if x is None:.

a = [1, 2]
b = [1, 2]
print(id(a), id(b))   # دو عدد متفاوت

(درس متدهای لیست: چاپ یکسان یعنی برابری، نه یکی‌بودن)

حالا خودت اجرا کن و تغییرش بده

a = [1, 2]
b = [1, 2]
c = a
print(a == b, a is b, a is c)