Hướng dẫn how do you compare things in python? - làm thế nào để bạn so sánh những thứ trong python?
Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem nó cùng với hướng dẫn bằng văn bản để làm sâu sắc thêm sự hiểu biết của bạn: So sánh các đối tượng Python đúng cách: "là" vs "==" This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Comparing Python Objects the Right Way: "is" vs "==" Show
Có một sự khác biệt tinh tế giữa toán tử nhận dạng Python ( Toán tử 6, ngoại trừ khi bạn so sánh với 7.equality of two objects, whereas the Python is operator checks whether two variables point to the same object in memory. In the vast majority of cases, this means you should use the equality operators == and 6, except when you’re comparing to 7. Trong hướng dẫn này, bạn sẽ học:
So sánh danh tính với Python IS và không phải là người vận hànhCác toán tử Python 9 so sánh danh tính của hai đối tượng. Trong Cpython, đây là địa chỉ bộ nhớ của họ. Tất cả mọi thứ trong Python là một đối tượng và mỗi đối tượng được lưu trữ tại một vị trí bộ nhớ cụ thể. Các toán tử Python is và 9 có kiểm tra xem hai biến có đề cập đến cùng một đối tượng trong bộ nhớ hay không.identity of two objects. In
CPython, this is their memory address. Everything in Python is an object, and each object is stored at a specific memory location. The Python is and 9 operators check whether two variables refer to the same object in
memory. Bạn có thể sử dụng 5 để kiểm tra danh tính của một đối tượng:>>>
Dòng cuối cùng hiển thị địa chỉ bộ nhớ nơi chính chức năng tích hợp 6 được lưu trữ.Có một số trường hợp phổ biến trong đó các đối tượng có cùng giá trị sẽ có cùng một ID theo mặc định. Ví dụ, các số -5 đến 256 được thực tập trong CPython. Mỗi số được lưu trữ tại một vị trí số ít và cố định trong bộ nhớ, lưu bộ nhớ cho các số nguyên thường được sử dụng.interned in CPython. Each number is stored at a singular and fixed place in memory, which saves memory for commonly-used integers. Bạn có thể sử dụng 7 cho chuỗi thực tập để thực hiện. Chức năng này cho phép bạn so sánh các địa chỉ bộ nhớ của chúng thay vì so sánh các đặc điểm của các chuỗi:>>>
Dòng cuối cùng hiển thị địa chỉ bộ nhớ nơi chính chức năng tích hợp 6 được lưu trữ.Có một số trường hợp phổ biến trong đó các đối tượng có cùng giá trị sẽ có cùng một ID theo mặc định. Ví dụ, các số -5 đến 256 được thực tập trong CPython. Mỗi số được lưu trữ tại một vị trí số ít và cố định trong bộ nhớ, lưu bộ nhớ cho các số nguyên thường được sử dụng.This means you should not use the Python Bạn có thể sử dụng >>> a = 256 >>> b = 256 >>> a is b True >>> id(a) 1638894624 >>> id(b) 1638894624 >>> a = 257 >>> b = 257 >>> a is b False >>> id(a) 2570926051952 >>> id(b) 2570926051984 7 cho chuỗi thực tập để thực hiện. Chức năng này cho phép bạn so sánh các địa chỉ bộ nhớ của chúng thay vì so sánh các đặc điểm của các chuỗi:Các biến 8 và 9 ban đầu chỉ ra hai đối tượng khác nhau trong bộ nhớ, như được hiển thị bởi ID khác nhau của chúng. Khi bạn thực tập chúng, bạn đảm bảo rằng 8 và 9 chỉ vào cùng một đối tượng trong bộ nhớ. Bất kỳ chuỗi mới nào có giá trị 2 bây giờ sẽ được tạo tại một vị trí bộ nhớ mới, nhưng khi bạn thực tập chuỗi mới này, bạn đảm bảo rằng nó chỉ vào cùng một địa chỉ bộ nhớ với 2 đầu tiên mà bạn đã thực tập.>>>
Dòng cuối cùng hiển thị địa chỉ bộ nhớ nơi chính chức năng tích hợp 6 được lưu trữ.common integers (ranging from -5 to 256), they’re stored at separate memory addresses.Có một số trường hợp phổ biến trong đó các đối tượng có cùng giá trị sẽ có cùng một ID theo mặc định. Ví dụ, các số -5 đến 256 được thực tập trong CPython. Mỗi số được lưu trữ tại một vị trí số ít và cố định trong bộ nhớ, lưu bộ nhớ cho các số nguyên thường được sử dụng.Bạn có thể sử dụng 7 cho chuỗi thực tập để thực hiện. Chức năng này cho phép bạn so sánh các địa chỉ bộ nhớ của chúng thay vì so sánh các đặc điểm của các chuỗi:>>>
Dòng cuối cùng hiển thị địa chỉ bộ nhớ nơi chính chức năng tích hợp 6 được lưu trữ.Có một số trường hợp phổ biến trong đó các đối tượng có cùng giá trị sẽ có cùng một ID theo mặc định. Ví dụ, các số -5 đến 256 được thực tập trong CPython. Mỗi số được lưu trữ tại một vị trí số ít và cố định trong bộ nhớ, lưu bộ nhớ cho các số nguyên thường được sử dụng. >>>
Dòng cuối cùng hiển thị địa chỉ bộ nhớ nơi chính chức năng tích hợp 6 được lưu trữ.Có một số trường hợp phổ biến trong đó các đối tượng có cùng giá trị sẽ có cùng một ID theo mặc định. Ví dụ, các số -5 đến 256 được thực tập trong CPython. Mỗi số được lưu trữ tại một vị trí số ít và cố định trong bộ nhớ, lưu bộ nhớ cho các số nguyên thường được sử dụng.Bạn có thể sử dụng 7 cho chuỗi thực tập để thực hiện. Chức năng này cho phép bạn so sánh các địa chỉ bộ nhớ của chúng thay vì so sánh các đặc điểm của các chuỗi:same value are often stored at separate memory addresses. Use the equality operators == and 6 if you want to check whether or not two objects have the same value, regardless of where they’re stored in memory. In the vast majority of cases, this is
what you want to do.Khi bản sao đối tượng bằng nhau nhưng không giống nhauTrong ví dụ dưới đây, bạn đặt 9 thành bản sao của 8 (là một đối tượng có thể thay đổi, chẳng hạn như danh sách hoặc từ điển). Cả hai biến sẽ có cùng một giá trị, nhưng mỗi biến sẽ được lưu trữ tại một địa chỉ bộ nhớ khác nhau:>>>
8 và 9 hiện được lưu trữ tại các địa chỉ bộ nhớ khác nhau, do đó 4 sẽ không còn trả về 5. Tuy nhiên, 6 trả về 5 vì cả hai đối tượng đều có cùng giá trị.Cách so sánh bằng cách bình đẳng hoạt độngSự kỳ diệu của toán tử bình đẳng 0 của đối tượng ở bên trái của dấu hiệu == .Đây là một phương pháp lớp ma thuật mà Lát gọi là bất cứ khi nào một thể hiện của lớp này được so sánh với một đối tượng khác. Nếu phương thức này không được thực hiện, thì Là một bài tập, hãy tạo một lớp 2 kế thừa từ 3 và triển khai 0 để so sánh xem độ dài của chuỗi này có giống với độ dài của đối tượng khác hay không:
Bây giờ, một sillystring 2 phải bằng với chuỗi 6 và thậm chí với bất kỳ đối tượng nào khác có cùng độ dài:
>>>
8 và 9 hiện được lưu trữ tại các địa chỉ bộ nhớ khác nhau, do đó 4 sẽ không còn trả về 5. Tuy nhiên, 6 trả về 5 vì cả hai đối tượng đều có cùng giá trị.Cách so sánh bằng cách bình đẳng hoạt động Sự kỳ diệu của toán tử bình đẳng == xảy ra trong phương pháp lớp >>> a = 256 >>> b = 256 >>> a is b True >>> id(a) 1638894624 >>> id(b) 1638894624 >>> a = 257 >>> b = 257 >>> a is b False >>> id(a) 2570926051952 >>> id(b) 2570926051984 0 của đối tượng ở bên trái của dấu hiệu ==.Đây là một phương pháp lớp ma thuật mà Lát gọi là bất cứ khi nào một thể hiện của lớp này được so sánh với một đối tượng khác. Nếu phương thức này không được thực hiện, thì
Tất nhiên, đây là hành vi ngớ ngẩn đối với một đối tượng hoạt động như một chuỗi, nhưng nó minh họa những gì xảy ra khi bạn so sánh hai đối tượng sử dụng 6 đưa ra phản hồi nghịch đảo của điều này trừ khi phương pháp lớp 9 cụ thể được thực hiện.Ví dụ trên cũng cho bạn thấy rõ lý do tại sao việc sử dụng toán tử Python is là tốt để so sánh với >>> from sys import intern >>> a = 'hello world' >>> b = 'hello world' >>> a is b False >>> id(a) 1603648396784 >>> id(b) 1603648426160 >>> a = intern(a) >>> b = intern(b) >>> a is b True >>> id(a) 1603648396784 >>> id(b) 1603648396784 7, thay vì toán tử ==. Nó không chỉ nhanh hơn vì nó so sánh các địa chỉ bộ nhớ, mà còn an toàn hơn vì nó không phụ thuộc vào logic của bất kỳ phương pháp lớp >>> a = 256 >>> b = 256 >>> a is b True >>> id(a) 1638894624 >>> id(b) 1638894624 >>> a = 257 >>> b = 257 >>> a is b False >>> id(a) 2570926051952 >>> id(b) 2570926051984 0 nào.So sánh các toán tử so sánh Pythoncompare the value of two objects, whereas the Python 9 operators compare whether two variables
refer to the same object in memory. If you keep this distinction in mind, then you should be able to prevent unexpected behavior in your code.Theo nguyên tắc thông thường, bạn nên luôn luôn sử dụng các toán tử bình đẳng 6, ngoại trừ khi bạn so sánh với 7:object interning and the Python is operator, then check out Why you should almost never use “is” in Python. You could also have a look at how you can
use 7 to optimize memory usage and comparison times for strings, although the chances are that Python already automatically handles this for you behind-the-scenes.Sử dụng các toán tử Python 6 để so sánh bình đẳng đối tượng. Ở đây, bạn thường so sánh giá trị của hai đối tượng. Đây là những gì bạn cần nếu bạn muốn so sánh việc hai đối tượng có cùng nội dung hay không, và bạn không quan tâm đến nơi họ lưu trữ trong bộ nhớ.equality and identity operators do under the hood, you can try writing your own 0 class methods, which define how instances of this class are compared when using the == operator. Go and apply your newfound knowledge of these Python comparison operators!
Sử dụng các toán tử Python == và === trong Python là gì?Toán tử == Kiểm tra xem hai toán hạng có bằng giá trị hay không. Toán tử === Kiểm tra xem xem hai toán hạng có bằng với kiểu dữ liệu và giá trị không. The === operator checks to see if two operands are equal by datatype and value.
Có một chức năng so sánh trong Python?Nó có sẵn trong Python 2.7, Python 3.2 và sau đó.Theo tài liệu Python 3, hàm so sánh là bất kỳ khả năng gọi nào chấp nhận hai đối số, so sánh chúng và trả về một số âm cho ít hơn, bằng không về bình đẳng hoặc số dương cho lớn hơn.available in Python 2.7, Python 3.2, and later. According to the Python 3 documentation, “a comparison function is any callable that accepts two arguments, compares them, and returns a negative number for less-than, zero for equality, or a positive number for greater-than. |