+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
قبل توسط (484 امتیاز)
ممنون از جوابتون. آقای زرین فام برای مقدار 300 هم با دو برچسب a و b امتحان بفرمایید.
قبل توسط (1.1هزار امتیاز)
جالب بود تشکر، منم دلیلشو نمی دونم فعلا!
قبل توسط (484 امتیاز)
خواهش می کنم. هر چی هست یه سری اعداد ررو مثه هم آدرس می ده و یه سری دیگه رو متفاوت. مثلا 100 رو یکی اما عددی مثه 300 رو هر بار آدرس جدید می ده.
قبل توسط (1.1هزار امتیاز)
تشکر از شما.
قبل توسط (484 امتیاز)
خواهش می کنم

سوالات مشابه

0 امتیاز
2 پاسخ 304 بازدید
0 امتیاز
4 پاسخ 716 بازدید
0 امتیاز
1 پاسخ 341 بازدید
0 امتیاز
1 پاسخ 484 بازدید
0 امتیاز
1 پاسخ 399 بازدید
سوال شده 9 سال قبل در کامپیوتر و اینترنت توسط hosseini (1.9هزار امتیاز)
0 امتیاز
1 پاسخ 417 بازدید
+1 امتیاز
2 پاسخ 877 بازدید
...