Ответ
Ответ не найден
Ответ 18+ 🔞
Да ты посмотри, какой прикол! Вот сидишь ты, значит, пишешь на Python, и всё вроде красиво: result = a + b. А потом бац — тебе нужно не складывать, а конкатенировать строки, если это строки, или числа складывать, если это числа. И пишешь ты такую хуйню:
def add(a, b):
return a + b
И вроде всё работает, пока не подсунешь туда add(2, "3"). А там тебе, ясное дело, TypeError — хуй с горы, а не сложение. И сидишь ты, чешешь репу: «Э, бошка, думай! Как же сделать, чтобы эта функция не ломалась, как старая тачка?»
А решение-то, блядь, простое, как три копейки! Надо просто проверить, что за хуйню тебе передали. Вот смотри:
def add(a, b):
if isinstance(a, (int, float)) and isinstance(b, (int, float)):
return a + b
elif isinstance(a, str) and isinstance(b, str):
return a + b
else:
raise TypeError("Оба аргумента должны быть либо числами, либо строками, ёпта!")
Вот и вся магия! Никаких ебушки-воробушки, просто логика. Проверили типы — и нет проблем. А если какой-то умник подсунул add([1], 2), так ему сразу в лоб ошибка: «Иди нахуй со своим списком, тут так не играют!»
Главное — не выёбывайся с излишней сложностью. Часто всё решается парой проверок, а не многоэтажными декораторами, от которых мозг вытекает. Пиши просто, пиши понятно, чтобы через месяц самому не пиздануть себя по лбу со словами «И кто это такое говно написал?».