آیا تفاوتی بین == و is در پایتون وجود دارد؟
در پایتون، دو عملگر "==" و "is" برای مقایسه استفاده میشوند، اما هر کدام عملکرد و معنای متفاوتی دارند که شناخت آنها از اهمیت بالایی برخوردار است.
عملگر "==" برای بررسی برابری مقدار بهکار میرود. این عملگر بررسی میکند که آیا اشیا از نظر مقدار برابر هستند یا نه. به عبارت دیگر، اگر دو شی مقدار یکسانی داشته باشند، "==" مقدار True بر می گرداند. به عنوان مثال:
n = 5
if n == 5:
print('یس!')
در مقابل، عملگر "is" برای بررسی هویت اشیا بهکار میرود. این عملگر بررسی میکند که آیا دو متغیر نشاندهندهی یک شی خاص در حافظه هستند یا خیر. به بیان سادهتر، "is" بررسی میکند که آیا دو متغیر به یک آدرس حافظه اشاره میکنند یا خیر. برای مثال:
b = a
if b is a:
print('یس!')
نکته: برای مقادیر عددی ثابت از 0 تا 256، پایتون از یک متد خاص برای استفاده مجدد از آن اشیا استفاده میکند، به همین دلیل ممکن است دو متغیر به یک شی یکسان اشاره کنند. به مثال زیر توجه کنید:
a = 200
b = 200
print(a is b) # True
اما هنگام بررسی اعداد بزرگتر این موضوع صادق نیست:
a = 500
b = 500
print(a is b) # False
یکی دیگر از کاربردهای "is" مقایسه با مقدار None است. به این مثال دقت کنید:
if my_variable is None:
print('my_variable is None') # درست است.
با توجه به استاندارد برنامهنویسی پایتون (PEP 8)، توصیه میشود که همیشه با "is" مقایسههایی مانند None انجام دهید و از عملگرهای برابری اجتناب کنید.