درک تفاوت عملگر == و is در پایتون

Please login to bookmark Close

همانطور که یک کیلوگرم سیب و یک کیلوگرم گلابی وزن برابر و جنس متفاوتی دارند، عدد صحیح 1 و عدد اعشاری 1.0 هم مقدار برابر ولی جنس متفاوتی دارند.

عملگر is در پایتون به‌طور خاص برای مقایسه هویت اشیا طراحی شده است و با عملگر == که برای مقایسه مقادیر استفاده می‌شود، تفاوت‌های مهمی دارد. در ادامه، به بررسی دقیق عملگر is، کاربردهای آن و تفاوت‌هایش با سایر عملگرها می‌پردازم اما قبل از آن بهتر است نیم‌نگاهی به تابع id() داشته باشیم.

تابع id()

این تابع یک شی را به عنوان ورودی می‌گیرد و آدرس آن در حافظه رم را در قالب یک عدد برمی‌گرداند.

name = 'CodeBaz.dev'
print(id(name)) # output: 133707097800880

اگر دو متغیر را به این تابع ارسال کنیم و برای هر دو خروجی یکسانی داشته باشیم درواقع هر دو متغیر به یک شی در حافظه اشاره می‌کنند.

name = 'CodeBaz.dev'
name2 = 'CodeBaz.dev'
print(id(name))  # output: 133707097800880
print(id(name2)) # output: 133707097800880

درک رفتار عملگر is

عملگر is بررسی می‌کند که آیا دو متغیر به یک شیء مشابه در حافظه اشاره می‌کنند یا خیر. به بیان ساده:

  • اگر دو متغیر به یک مکان یکسان در حافظه اشاره کنند، نتیجه is برابر با True است.
  • اگر دو متغیر به اشیاء متفاوتی (حتی با مقادیر یکسان) اشاره کنند، نتیجه is برابر با False خواهد بود.
x = [1, 2, 3]
y = x
z = [1, 2, 3]

print(x is y)  # خروجی: True
print(x is z)  # خروجی: False

در این مثال، x و y به یک لیست مشابه در حافظه اشاره می‌کنند، اما z یک لیست جداگانه است که صرفاً مقدارش با x برابر است.

تفاوت is و ==

  • is بررسی می‌کند که آیا دو متغیر دقیقاً به یک شیء اشاره می‌کنند.
  • == بررسی می‌کند که آیا مقادیر دو شیء برابر هستند یا خیر.
 = [1, 2, 3]
y = [1, 2, 3]

print(x == y)  # خروجی: True (چون مقادیرشان برابر است)
print(x is y)  # خروجی: False (چون به اشیاء متفاوتی اشاره می‌کنند)

نکته مهم

  • از is برای مقایسه مقدار استفاده نکنید. همیشه از == برای مقایسه مقادیر استفاده کنید.
Please login to bookmark Close
نظرات

دیدگاهتان را بنویسید

فهرست مطالب

سرفصل دوره

تمرین

این قسمت تمرین ندارد!

پاسخ تمرین ها

هنوز برای تمرین‌های این قسمت پاسخی ثبت نشده است!

اشتراک گذاری

چرا بهتره از فیلترشکن استفاده کنید؟

من همه ویدئو ها و پادکست های کُدباز رو توی یوتیوب و ساندکلود و پلتفرم هایی آپلود می‌کنم که اغلب فیلتر هستند.

اغلب آموزش‌ها ویدئو و پادکست دارند. پس اگر می‌خواهید از محتوای سایت بیشترین استفاده رو ببرید نیاز به فیلتر شکن دارید.

توجه داشته باشید که برای خرید از فروشگاه بهتره فیلتر شکن رو خاموش کنید.

تنظیمات

انتخاب زبان
تغییر تم