Я смущен.Кортеж строк «есть» сравнение ведет себя непоследовательно
foo = ("empty", 0)
foo[0] is "empty"
Возврат Неверно. Кажется, что это проблема с ключевыми строками, так как «список» также терпит неудачу. «empt» и другие строки верны. Кажется, что это происходит только с кортежами, как если бы foo был списком, код также возвращает true
Я тестировал это с помощью python 3.4.3 и python 3.5, и оба ведут себя таким образом, python2.7 не кажется эта проблема хотя и возвращает true, как ожидалось.
Я пропустил какой-то стандарт на кортежах в python3? Я попытался решить эту проблему google-foo, но я не понимаю.
Edit: Чтобы очистить вещи, мой точный вопрос, почему же
foo = ("empty", 0)
foo[0] is "empty"
возвращение Ложные, но
foo = ("empt", 0)
foo[0] is "empt"
возвращение Правда?
You're * сравнение струнные *. Почему вы решили использовать 'is', а не' == '? –
Потому что эти два не являются буквально одним и тем же объектом, что и для '' '' 'тестов. Они равны. * – kindall
't = (" list ",); t [0] является «списком» 'evalutes к' False' и 't = (" notlist ",); t [0] является «notlist» '' 'True'. Я думаю, что это суть вопроса. – mhoff