Toán tử nhận dạng trong Python là loại toán tử nhị phân đặc biệt so sánh vị trí bộ nhớ của hai đối tượng
Chúng rất hữu ích để xác minh xem hai đối tượng, biến hoặc giá trị có được lưu trữ trên cùng một phần của vị trí bộ nhớ hay không
Ngôn ngữ Python hỗ trợ hai loại toán tử nhận dạng. họ đang
- Là
- không phải
Chúng ta hãy xem xét từng toán tử nhận dạng với sự trợ giúp của các ví dụ
Toán tử Identity Is [is]
Toán tử nhận dạng này so sánh các đối tượng và đánh giá là đúng nếu cả hai đối tượng đều giống hệt nhau và được lưu trữ trong cùng một vị trí bộ nhớ
Nói cách khác, toán tử đồng nhất cho kết quả đúng nếu các biến ở bên trái và bên phải của toán tử tham chiếu đến cùng một đối tượng và nếu không thì trả về giá trị sai. Ký hiệu toán tử là 'là'
Hãy lấy một số chương trình ví dụ dựa trên việc sử dụng toán tử nhận dạng 'là' trong Python
ví dụ 1
x = 20 y = 20 result = x is y print[result] str1 = "Python" str2 = "Python" result = str1 is str2 print[result] name1 = "John" name2 = "Jack" result = name1 is name2 print[result] a = True b = 1 result = a is b print[result] p = "20" q = 20 result = p is q print[result]
Output: True True False False False
Giải thích .
a] Trong ví dụ này, x và y là các đối tượng số nguyên có cùng giá trị. Do đó, chúng bằng nhau, giống hệt nhau và được lưu trữ trong cùng một vị trí bộ nhớ. Do đó, toán tử nhận dạng 'là' trả về giá trị thực
b] Tương tự, trong trường hợp str1 và str2 [chuỗi]
c] Trong trường hợp chuỗi name1 và name2, cả hai không giống nhau vì chúng là các đối tượng khác nhau. Do đó, toán tử nhận dạng 'là' trả về giá trị sai
d] Tương tự, a là đối tượng boolean có giá trị thực, trong khi b là đối tượng nguyên có giá trị 1. Do đó, chúng là các đối tượng khác nhau và chiếm các vị trí bộ nhớ khác nhau. Do đó, toán tử 'là' id trả về giá trị sai
ví dụ 2
list1 = [10, 20.5, 30, 'text'] list2 = [10, 20.5, 30, 'text'] result = list1 is list2 print[result] dict1 = { 'name': 'Jack', 'age': 22, } dict2 = { 'name': 'Jack', 'age': 22, } result = dict1 is dict2 print[result]____3____4
Giải thích .
a] Trong ví dụ này, các biến list1 và list2 đề cập đến các danh sách. Mặc dù chúng bằng nhau [có cùng giá trị], nhưng không giống nhau. Vì danh sách có thể thay đổi [có thể thay đổi], trình thông dịch Python lưu trữ chúng riêng biệt ở các vị trí bộ nhớ khác nhau. Do đó, toán tử nhận dạng 'là' trả về giá trị sai
b] Tương tự, trong trường hợp từ điển dict1 và dict2
c] Các biến tuple1 và tuple2 tham chiếu đến các bộ. Chúng bằng nhau [có cùng giá trị] và giống hệt nhau. Vì bộ dữ liệu là bất biến [không thể thay đổi], trình thông dịch Python lưu trữ chúng trong cùng một vị trí bộ nhớ. Do đó, toán tử nhận dạng 'là' trả về giá trị thực
Danh tính không phải là toán tử [không]
Toán tử nhận dạng này so sánh các đối tượng và đánh giá là sai nếu cả hai đối tượng đều giống hệt nhau và được lưu trữ trong cùng một vị trí bộ nhớ
Nói cách khác, toán tử nhận dạng 'không phải' cho kết quả sai nếu các biến ở bên trái và bên phải của toán tử tham chiếu đến cùng một đối tượng và nếu không thì trả về giá trị thực. Ký hiệu toán tử là 'không'
Trong bài học này, chúng ta sẽ tìm hiểu Toán tử nhận dạng là gì và nó hoạt động như thế nào trong lập trình Python với một số ví dụ
Toán tử nhận dạng là gì
Toán tử nhận dạng được sử dụng trong Python để kiểm tra xem hai giá trị [hoặc biến] có nằm trên cùng một phần của bộ nhớ hay không. Hai biến có giá trị bằng nhau không có nghĩa là giống nhau
Có 2 loại toán tử nhận dạng trong Python và chúng là
- Là
- không phải
Bây giờ chúng ta hãy xem từng ví dụ về các toán tử nhận dạng để hiểu rõ hơn
là nhà điều hành
Toán tử is dùng để kiểm tra xem hai biến có giống nhau không [tham chiếu đến cùng một đối tượng]. Nếu chúng giống nhau thì kết quả sẽ là True ngược lại kết quả sẽ là False
Ví dụ
a=15
b=15
c="apple"
d="apple"
e=[1,2,3]
f=[1,2,3]
x=a is b # output of x is True
y=c is d # output of y is True
z=e is f # output of z is False
Trong ví dụ trên, đầu ra của x là True vì cả hai biến a và b đều là kiểu số nguyên và giá trị của chúng cũng giống nhau. Tương tự, đầu ra của y là True vì cả hai biến c và d đều là kiểu chuỗi và giá trị của chúng cũng giống nhau. Trong khi đầu ra của z là Sai vì cả hai biến e và f đều là danh sách và trình thông dịch đã lưu chúng ở một vị trí bộ nhớ khác
Vì vậy, các giá trị của chúng giống nhau nhưng vì chúng không được lưu trữ, trong cùng một vị trí bộ nhớ nên chúng không giống nhau