Tôi thường thấy if obj is None:
bằng Python và gần đây tôi đã xem qua if obj is():
. Vì tuple không thể thay đổi được, nó giống như một tối ưu hóa nội bộ hợp lý trong trình thông dịch Python để có bộ trống rỗng là một singleton, do đó cho phép sử dụng is
thay vì yêu cầu ==
. Nhưng điều này có được đảm bảo ở đâu đó không? Từ phiên bản nào của thông dịch viên?so sánh đối tượng với bộ trống rỗng với toán tử 'is' trong Python 2.x
[sửa] câu hỏi quan trọng bởi vì if() không phải là một singleton và có cách tạo ra một bộ trống với một địa chỉ khác, sau đó sử dụng is {}
là một lỗi. Nếu nó chỉ được đảm bảo từ Python 2.x với x> 0, thì điều quan trọng là phải biết giá trị của x nếu bạn cần đảm bảo tính tương thích ngược của mã của bạn. Nó cũng quan trọng để biết nếu điều này có thể phá vỡ mã của bạn khi sử dụng PyPy/Jython/IronPython ...
Đó chắc chắn không phải là thành ngữ. Có một trường hợp sử dụng hợp lý cho điều này? –
@StevenRumbalski: không có trường hợp sử dụng đặc biệt nào. Tôi đã tìm thấy mã bằng cách sử dụng này, và nó đã cho tôi tự hỏi nếu tôi nên thay đổi nó trở lại, hoặc cập nhật ý kiến của tôi về "là" nhà điều hành.Nó sẽ có ý nghĩa để thực hiện() như là một singleton ở cấp độ thông dịch viên ... –