Найти - Пользователи
Полная версия: должен быть false но почему-то true???
Начало » Python для новичков » должен быть false но почему-то true???
1
andrey.mezhov
Доброго времени суток!
Только начал изучение замечательного языка (по книге Саммерфилда)
и столкнулся с небольшим непониманием
если вводить в Shell:
x="str str"
y="str str"
x is y
#то получится как по книге false
но если вводить в текстовом файле, а потом подать на исполнение
x="str str"
y="str str"
print(x is y)
# то получается true
Помогите разобраться в чем разница, а то уж очень хочется разобраться прежде чем идти дальше
P.S. работаю в IDLE с оф. сайта
py.user.next
Он, когда файл запускает, сначала его компилирует. Видимо, тогда-то он и замечает одинаковые строки и оптимизирует код, сохраняя их как одну.

В любом случае, через is строки не сравниваются, используй == или != .
alex925
andrey.mezhov
В книге Марк Лутц - Изучаем Python (4-е изд. 2011), прочитай на странице 203 “Разделяемые ссылки и равенство”. Это как раз на эту тему.
a.medveditskov
Странно, однако… У меня и так и эдак получается “True”?
andrey.mezhov
py.user.next
Он, когда файл запускает, сначала его компилирует. Видимо, тогда-то он и замечает одинаковые строки и оптимизирует код, сохраняя их как одну.В любом случае, через is строки не сравниваются, используй == или != .
это я понял, просто в книге пример в shell сначала сравнивается через is а потом через == и !=
хотел разобраться почему… за ответ спасибо!
alex925
andrey.mezhovВ книге Марк Лутц - Изучаем Python (4-е изд. 2011), прочитай на странице 203 “Разделяемые ссылки и равенство”. Это как раз на эту тему.
спасибо большое, почитаю Лутца
a.medveditskov
Странно, однако… У меня и так и эдак получается “True”?
Бывает и такое если в одном и том же окне shell производить манипуляции, но если заново в shell переопределить x и y, то получится false. у меня получался…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB