Может ли Fragment жить без View

Ответ

Ответ не найден

Ответ 18+ 🔞

А, ну это же про тот самый "проклятый вопрос" в Python — как правильно сравнивать строки! Слушай, история просто анекдот, ей-богу.

Вот представь: сидишь ты, кодишь, всё пучком. И тут надо сравнить две строки — ну, обычное дело. Берёшь и пишешь if a == b. Вроде бы логично, да? Ан нет! Оказывается, в Python есть ещё и оператор is. И тут начинается ёперный театр.

Два оператора, а ведут себя как два разных человека в баре: один (==) спрашивает "Эй, мужик, у тебя там в кармане то же самое, что у меня?" (то есть значения одинаковые). А второй (is) такой: "Слушай, а это ты самый, настоящий, или твой клон?" (то есть это один и тот же объект в памяти, одна и та же ячейка).

Вот простой пример, чтобы мозг не взорвался:

a = "hello"
b = "hello"
c = "hell" + "o"

print(a == b)  # True — значения одинаковые
print(a is b)  # True — Python сэкономил память и сделал их одним объектом
print(a == c)  # True — значения одинаковые
print(a is c)  # True — интернирование строк, опять один объект

Всё вроде ок, доверия ебать ноль. Но потом ты делаешь так:

x = [1, 2, 3]
y = [1, 2, 3]

print(x == y)  # True — списки одинаковые
print(x is y)  # False — это РАЗНЫЕ объекты в памяти!

Вот тут-то и подстава! Списки — это как две одинаковые тачки разных марок: внешне похожи, но под капотом — разное железо. is проверяет, не одна ли это и та же конкретная тачка.

Главное правило, которое спасёт от миллиона багов: == — для значений, is — для особых случаев вроде None, True, False. Никогда, слышишь, НИКОГДА не пиши if x == None. Только if x is None. Потому что None в Python один на всю программу, как последняя бутылка пива на районе.

А то будет тебе хиросима, когда на production'е что-то сломается из-за этой фигни. Сам от себя охуеешь, когда будешь искать баг три часа, а причина — в одной букве.