در برنامه های پایتون همه چیز یک شی (Object) است. این شی ها می توانند از کلاس های int یا float یا str یا دیگر گونه های پیش فرض پایتون باشند و یا می توانند نمونه ای از کلاس های نوشته شده بدست برنامه نویس باشند. نام متغیر، شناسه ای است که می خواهیم به کمک آن به مقدار آن در حافظه دسترسی داشته باشیم.

تابع ()id

در کد بالا هر دو متغیر a و b به مقدار 10 اشاره دارند ولی بازهم مقدار این دو متغیر در بایت های نا همسانی از حافظه RAM نگهداری می شوند. در پایتون هر شی دارای یک شناسه (Id) یکتا و ویژه خودش است که این شناسه شماره ای صحیح (Int Number) است. اگر دو متغیر دارای مقدار یکسانی باشند، پس هر دو دارای یک شناسه خواهند بود. در شکل زیر هر دو متغیر a و b دارای مقدار 10 هستند، پس هر دو دارای شناسه یکسانی (شماره 140737338106800) خواهند بود.

شکل زیر همین مورد، یعنی هسمان بودن مقدار دو متغیرکه نتیجه آن همسان بودن شناسه متغیرها می شود را برای تاپل ها و رشته ها نشان می دهد. می بینید که چون مقدار دو تاپل t1 و t2 یکسان است، پس شماره شناسه آنها نیز یکسان خواهد بود.

اما این مورد درباره دیکشنری ها نخواهد بود، بنابراین اگر مقدار دو دیکشنری یکسان باشد، شناسه آنها یکسان نخواهد بود.

شکل زیر نمایش شناسه نمونه های ساخته شده از روی کلاس های نوشته شده بدست برنامه نویس (یا کلاسی های یک ماژول) را نشان می دهد. همانگونه که می بینید مقدار شناسه هر نموهه با دیگری متفاوت است. ولی متغیرهای a1 و a2 که مقدار ویژگی a برابر با 10 را نگه می دارند دارای شناسه یکسانی (شماره 140737338106480) هستند.

بررسی برابری مقدار دو متغیر

می توانیم از شناسه و تابع ()id برای بررسی هم اندازه و همسان و برابر بودن مقدار دو متغیر کمک بگیریم. در حالت عادی برای بررسی برابر بودن مقدار دو متغیر، از عملگر == و برای بررسی نابرابری مقدار دو متغیر از عملگر =! کمک می گیریم.