* به نام خدا *
سلام به مخاطبان وبسایت مهندس جان 🙂
یکی از نکات مهم و البته ساده در زبان برنامه نویسی پایتون تفاوت بین عملگرهای == و is هستش که شما دوست برنامه نویس حتما باید بدونی!
حالا در این پست این نکته رو یادآوری میکنم.
اول بهتون بگم به == عملگر برابری و به is عملگر هویت میگن.بریم برا توضیحات :
به طور کلی هر شی یا هر متغیر که در پایتون ذخیره میکنید در یک آدرسی ذخیره میشوند و هر موقع که بخوایم از اونها استفاده کنیم برنامه میره اون شی یا متغیر رو از اون آدرس میخونه .
در زبان پایتون اگه بخوایم آدرس رو ببینیم از دستور id استفاده میکنیم به مثال زیر دقت کنید:
1 2 3 4 5 6 7 8 |
#mohandesjan.ir x = 678 print(f"value of x: {x}") #value of x: 678 print(f"Address of x: {id(x)}") #Address of x: 1585248454704 #mohandesjan.ir |
اگه کد بالا رو اجرا کنید خواهید دید که در هر بار اجرا آدرس متغیر متفاوت خواهد بود اما مقدار متغیر تا زمانی که شما تغییرش ندید تغییری نخواهد کرد.
هر جا سوالی پیش اومد حتما کامنت کنید…
خب الان باید فرق آدرس و مقدار را متوجه شده باشید نکته همینجاست :
عملگر is آدرس هارو مقایسه میکنه اگه برابر بودن True برمیگردونه در غیر اینصورت False
اما عملگر == مقدار داده ها رو با همدیگه مقایسه میکنه .
یه مثال بزنم و دیگه تمام……….
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#mohandesjan.ir import copy x = ["100",12,'hello',53] b = [5] print(x is b) #False print(x == b) #False print(id(x)) y = x print(id(y)) print(y) #['100', 12, 'hello', 53] #mohandesjan.ir print(x is y) #True print(x == y) #True z=copy.deepcopy(x) print(id(z)) print(z) #['100', 12, 'hello', 53] print(x is z) #False print(x == z) #True #mohandesjan.ir |
امیدوارم این مطلب مفید بوده باشه.