+1 امتیاز
قبل در کامپیوتر و اینترنت توسط (484 امتیاز)
ویرایش شده قبل توسط

سلام

چرا در پایتون، برای متغیر های a,b شاهد یکسان بودن شناسه ها هستیم؟

>>> a=100
>>> b=100
>>> id (a)
1604114432

>>> id (b)
1604114432

2 پاسخ

+1 امتیاز
قبل توسط (484 امتیاز)

در پایتون، برای افزایش سرعت انجام امور محاسباتی، اعداد صحیح 0 تا 250 که، همگی اعداد متداولی در برنامه سازی هستند، درون داده ساختاری بنام Cache نگه داری می شوند.

برای همین، هنگامی که برای دریافت آدرس یک شی اقدام می کنیم، چنانچه مقدار آن شی، عددی صحیح و بین 0 تا 250 باشد، همواره آدرسی یکسان را برای id() دریافت می کنیم؛ حتی اگر چندین متغیر به صورت همزمان، به آن شی اشاره کنند.

ایجاد چندین برچسب مجزا برای یک چنین عددی، با اصطلاح Aliasing در پایتون شناخته می شود.

0 امتیاز
قبل توسط (1.1هزار امتیاز)

تابع id در پایتون مشخصه ای برای شئ ایجاد شده در حافظه است و محلی که شئ در حافظه قرار دارد را مشخص می کند.  در مثال شما هر دو متغییر a و b به یک خانه حافظه که شئ 100 درون آن ذخیره است اشاره می کند. در کد زیر دو متغییر دیگر هم اضافه شده است که آنها هم به همانجای قبل اشاره می کند:

a = 100
b = 100
c = a
d = b

print id(a)
print id(b)
print id(c)
print id(d)

> 27984216
> 27984216
> 27984216
> 27984216
قبل توسط (1.1هزار امتیاز)
تشکر از شما.
قبل توسط (484 امتیاز)
خواهش می کنم

سوالات مشابه

0 امتیاز
2 پاسخ 443 بازدید
0 امتیاز
4 پاسخ 963 بازدید
0 امتیاز
1 پاسخ 1.1هزار بازدید
0 امتیاز
1 پاسخ 434 بازدید
0 امتیاز
1 پاسخ 684 بازدید
0 امتیاز
1 پاسخ 529 بازدید
سوال شده 10 سال قبل در کامپیوتر و اینترنت توسط hosseini (1.9هزار امتیاز)
0 امتیاز
1 پاسخ 524 بازدید
+1 امتیاز
2 پاسخ 1.1هزار بازدید
...