Форум сайта python.su
0
Доброго времени суток!
Только начал изучение замечательного языка (по книге Саммерфилда)
и столкнулся с небольшим непониманием
если вводить в Shell:
x="str str" y="str str" x is y #то получится как по книге false
x="str str" y="str str" print(x is y) # то получается true
Офлайн
857
Он, когда файл запускает, сначала его компилирует. Видимо, тогда-то он и замечает одинаковые строки и оптимизирует код, сохраняя их как одну.
В любом случае, через is строки не сравниваются, используй == или != .
Отредактировано py.user.next (Апрель 15, 2015 12:46:15)
Офлайн
14
andrey.mezhov
В книге Марк Лутц - Изучаем Python (4-е изд. 2011), прочитай на странице 203 “Разделяемые ссылки и равенство”. Это как раз на эту тему.
Офлайн
0
Странно, однако… У меня и так и эдак получается “True”?
Офлайн
0
py.user.nextэто я понял, просто в книге пример в shell сначала сравнивается через is а потом через == и !=
Он, когда файл запускает, сначала его компилирует. Видимо, тогда-то он и замечает одинаковые строки и оптимизирует код, сохраняя их как одну.В любом случае, через is строки не сравниваются, используй == или != .
alex925спасибо большое, почитаю Лутца
andrey.mezhovВ книге Марк Лутц - Изучаем Python (4-е изд. 2011), прочитай на странице 203 “Разделяемые ссылки и равенство”. Это как раз на эту тему.
a.medveditskovБывает и такое если в одном и том же окне shell производить манипуляции, но если заново в shell переопределить x и y, то получится false. у меня получался…
Странно, однако… У меня и так и эдак получается “True”?
Офлайн