• 1401/09/11

تفاوت value type و Reference type :

با سلام خدمت اساتید.

قطعه کد زیر را نگاه کنید:

x=1
y=1

print(id(x))
print(id(y))
print(x==y)
print(x is y)

و حالا خروجی قطعه کد بالا:

1542710558960
1542710558960
True
True

x  و y دو متغیر مستقل از هم هستند برای چی هر دو id یکسان بوده و خروجی عملگر is برابر True می باشد؟

مگر x , y دو متغیر مختلف و جدا از هم نیستند؟چرا عملگر is برای آن true برمی گرداند؟

ممنون می شوم راهنمایی کنید؟

  • 1401/09/11
  • ساعت 12:48

الان به یک نکته جدید رسیدم!

numbers=[1,2,3]
num=[1,2,3]

print(id(numbers))
print(id(num))
print(numbers is num)

خروجی را ببینید!

1481170105792
1481170056512
False

در مثال اول xوy که هر دو مقدار 1 را داشتند به یک خانه از حافظه ram اشاره می کردند اما دو لیست با مقادیر یکسان به یک خانه از حافظه اشاره نمی کنند!

اگر کسی از دوستان مقاله ای در رابطه با مدیریت حافظه در پایتون داره لینکش را برای من بگذاره تا بخونم.

از استاد اردوخانی هم درخواست راهنمایی دارم.ممنونم.


  • 1401/10/05
  • ساعت 10:32

سلام وقت بخیر

جواب سوال اولتون رو میدونم اما دومی رو نه

شیوه‏‏ ی مدیریت حافظه در پایتون اینجوریه که اگر چند تا متغیر، مقدار برابر داشته باشند، برای هر کدام از متغیر ها یه خانه ی جدید توی حافظه درنظر نمی گیره. به جاش یه خونه با اون مقدار در نظر میگیره و همه ی متغیر ها رو به اون خونه ارجاع میده. برای همینه که id دوتا متغیری که تعریف کردی و مقدارشون رو یک دادی، برابره  


logo-samandehi