Trong khi cố gắng để trả lời một câu hỏi về việc sử dụng các từ khóa is
, tôi đã tìm ra rằng mã này:Tại sao "a là b" hoạt động khác trên Chế độ tương tác và khi nó chạy từ tập lệnh?
Script:
a = 123456
b = 123456
print a is b # True
Interactive mode:
>>> a = 123456
>>> b = 123456
>>> a is b
False
đã đưa ra các kết quả đầu ra khác nhau trên chế độ Tương tác Python và khi nó được chạy từ một tập lệnh.
Từ this answer:
Việc thực hiện giữ một mảng của các đối tượng số nguyên cho tất cả các số nguyên giữa -5 và 256, khi bạn tạo một int trong phạm vi mà bạn thực sự chỉ có được trở lại một tham chiếu đến đối tượng hiện có .
Vì vậy, tôi hy vọng rằng a is b
chỉ trả lại True
chỉ cho các số nguyên trong phạm vi [-5, 256]
. Nhưng nó chỉ đúng trên chế độ Tương tác, không phải khi nó được chạy từ một tập lệnh.
Câu hỏi: Tại saoa is b
cư xử khác nhau trên chế độ tương tác và khi nó chạy từ kịch bản?
Lưu ý: Tested bằng Python 2.7 và Python 3
Kết quả giống nhau trên Python 3. 'False' cho tương tác,' True' cho tập lệnh. – vaultah
Python 3.3 hoạt động như 2,7. Thật thú vị, '>>> a = b; >>> a là b' trả về 'True'. – Davidmh