>>> x=3
>>> id(x)
140115927705968
این تست رو خودتون میتونید انجام بدین. دو تا لیست به نام a و b با اعضای یکسان تعریف کنید:The operators is and is not test for an object’s identity: x is y is true if and only if x and y are the same object. An Object’s identity is determined using the id() function. x is not y yields the inverse truth value.
a = [1,2,3]
b = [1,2,3]
حالا دستور a == b رو اجرا کنید. همون طور که میبینید حاصل برابر با True میشه چرا که مقدار دو متغیر a و b یکسانه. اما اگر id های این دو متغیر رو بررسی کنید (تقریبا میشه مشابه پوینتر به یک متغیر در C در نظر گرفتش) میبینید که آیدیها متفاوته:print(id(a))
print(id(b))
متفاوت بودن id به این معنیه که این دو متغیر مربوط به یک آبجکت یکسان نیستند یا به عبارتی به یک بخش از حافظه اشاره ندارند و به همین خاطر حاصل a is b برابر با False میشه. حالا همین توضیحات رو میشه برای != و is not هم در نظر گرفت.
جناب حسین زاده شما هم پایتون کار هستید؟ فکر کنم کل اعضای انجمن پایتون کار باشن.ممکنه یه متغیر رو برابر یه متغیر دیگه قرار بدید:
پس با این حال هیچ متغیر هایی id هاشون با هم یکی نیستن. خب اینجوری این دستور چه کاربردی داره؟
>>> x=3
>>> y=x
>>> x is y
True
>>> id(x)
139905738844528
>>> id(y)
139905738844528
در پایتون فعلا این حالت به نظرم میرسه ولی اگر زبان آزادتری مثل C بود، مثال های جالبتری میشد زد.
این شناسه ها مشخص می کنه که در چه بخشی از حافظه قرار دارند؟جناب حسین زاده شما هم پایتون کار هستید؟ فکر کنم کل اعضای انجمن پایتون کار باشن.ممکنه یه متغیر رو برابر یه متغیر دیگه قرار بدید:
پس با این حال هیچ متغیر هایی id هاشون با هم یکی نیستن. خب اینجوری این دستور چه کاربردی داره؟کد: [انتخاب]>>> x=3
در پایتون فعلا این حالت به نظرم میرسه ولی اگر زبان آزادتری مثل C بود، مثال های جالبتری میشد زد.
>>> y=x
>>> x is y
True
>>> id(x)
139905738844528
>>> id(y)
139905738844528
یه چیزی که الآن متوجه شدم (اگر درست متوجه شده باشم)، در مثال بالا اگر مقدار y رو عوض کنید، idش عوض میشه و متفاوت از x میشه:این شناسه ها مشخص می کنه که در چه بخشی از حافظه قرار دارند؟جناب حسین زاده شما هم پایتون کار هستید؟ فکر کنم کل اعضای انجمن پایتون کار باشن.ممکنه یه متغیر رو برابر یه متغیر دیگه قرار بدید:
پس با این حال هیچ متغیر هایی id هاشون با هم یکی نیستن. خب اینجوری این دستور چه کاربردی داره؟کد: [انتخاب]>>> x=3
در پایتون فعلا این حالت به نظرم میرسه ولی اگر زبان آزادتری مثل C بود، مثال های جالبتری میشد زد.
>>> y=x
>>> x is y
True
>>> id(x)
139905738844528
>>> id(y)
139905738844528
یعنی اگر شناسه y با x یکی باشه اگر مقدار یکی از این دو تارو تغییر بدیم، مقدار اون یکی هم عوض میشه؟
چطور میشه مقدار x رو ریخت توی y اما با شناسه متفاوت؟
>>> x=3
>>> y=x
>>> x is y
True
>>> y+=1
>>> x is y
False
چطور میشه مقدار x رو ریخت توی y اما با شناسه متفاوت؟در ضمن شما اگر مقدار x رو در y ذخیره کنید بدون اینکه حتی اشاره ای به x بکنید، بازم پایتون بطور خودکار برابری شون رو تشخیص میده و یه id برابر براشون در نظر میگیره و در نتیجه در یک آدرس ذخیره ش میکنه:
>>> x=3
>>> y=3
>>> x is y
True