آموزش پایتون - عملگرهای هویت

عملگرهای هویت در پایتون

عملگرهای هویت شیءها را مقایسه می‌کنند تا مشخص کنند آیا آن‌ها یک حافظه مشترک دارند و به یک نوع شیء (نوع داده) اشاره می‌کنند یا خیر.

پایتون دو عملگر هویت ارائه کرده است؛ ما آن‌ها را به شرح زیر فهرست کرده‌ایم:

  • عملگر 'is'
  • عملگر 'is not'

عملگر 'is' در پایتون

عملگر 'is' اگر هر دو شیء عملوند حافظه مشترکی داشته باشند، مقدار True را برمی‌گرداند. آدرس حافظه شیء را می‌توان با استفاده از تابع "()id" به دست آورد. اگر "()id" برای هر دو متغیر یکسان باشد، عملگر "is" مقدار True را برمی‌گرداند.

مثالی از عملگر هویت 'is' در پایتون

a = [1, 2, 3, 4, 5]
b = [1, 2, 3, 4, 5]
c = a

# Comparing and printing return values
print(a is c)
print(a is b)

# Printing IDs of a, b, and c
print("id(a) : ", id(a))
print("id(b) : ", id(b))
print("id(c) : ", id(c))

این کد خروجی زیر را تولید خواهد کرد −

True
False
id(a) :  140114091859456
id(b) :  140114091906944
id(c) :  140114091859456

عملگر 'is not' در پایتون

عملگر 'is not' اگر هر دو شیء عملوند آدرس حافظه مشترکی نداشته باشند یا هر دو عملوند شیء یکسانی نباشند، مقدار True را برمی‌گرداند.

مثالی از عملگر هویت 'is not' در پایتون

a = [1, 2, 3, 4, 5]
b = [1, 2, 3, 4, 5]
c = a

# Comparing and printing return values
print(a is not c)
print(a is not b)

# Printing IDs of a, b, and c
print("id(a) : ", id(a))
print("id(b) : ", id(b))
print("id(c) : ", id(c))

این کد خروجی زیر را تولید خواهد کرد −

False
True
id(a) :  140559927442176
id(b) :  140559925598080
id(c) :  140559927442176

مثال‌های عملگرهای هویت در پایتون همراه با توضیحات

مثال ۱

a="Tut24"
b=a
print ("id(a), id(b):", id(a), id(b))
print ("a is b:", a is b)
print ("b is not a:", b is not a)

این کد خروجی زیر را تولید خواهد کرد −

id(a), id(b): 2739311598832 2739311598832
a is b: True
b is not a: False

اشیاء لیست و تاپل رفتاری متفاوت دارند که ممکن است در نگاه اول عجیب به نظر برسد. در مثال زیر، دو لیست "a" و "b" دارای آیتم‌های یکسانی هستند، اما ()id آن‌ها متفاوت است.

مثال ۲

a=[1,2,3]
b=[1,2,3]
print ("id(a), id(b):", id(a), id(b))
print ("a is b:", a is b)
print ("b is not a:", b is not a)

این کد خروجی زیر را تولید خواهد کرد −

id(a), id(b): 1552612704640 1552567805568
a is b: False
b is not a: True

لیست یا تاپل فقط آدرس‌های حافظه مربوط به هر آیتم را در خود نگه می‌دارد و نه خود آیتم‌ها را. بنابراین "a" شامل آدرس‌های اشیاء صحیح ۱۰، ۲۰ و ۳۰ در یک مکان خاص از حافظه است که ممکن است با مکان "b" متفاوت باشد.

مثال ۳

print (id(a[0]), id(a[1]), id(a[2]))
print (id(b[0]), id(b[1]), id(b[2]))

این کد خروجی زیر را تولید خواهد کرد −

140734682034984 140734682035016 140734682035048
140734682034984 140734682035016 140734682035048

به دلیل دو مکان متفاوت برای "a" و "b"، عملگر "is" حتی اگر این دو لیست شامل اعداد یکسانی باشند، مقدار False را برمی‌گرداند.

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