Ответ
Дзен Python (The Zen of Python, PEP 20) — это набор из 19 философских принципов, которые лежат в основе дизайна языка Python. Они служат руководством для написания чистого, читаемого и поддерживаемого кода. Увидеть их можно, выполнив команду import this в интерпретаторе Python.
Ключевые принципы:
Beautiful is better than ugly.(Красивое лучше, чем уродливое) — Код должен быть элегантным и эстетичным.Explicit is better than implicit.(Явное лучше, чем неявное) — Поведение кода должно быть очевидным, без скрытых побочных эффектов.Simple is better than complex.(Простое лучше, чем сложное) — Всегда следует искать наиболее простое решение задачи.Readability counts.(Читаемость имеет значение) — Код читают гораздо чаще, чем пишут, поэтому его понятность — приоритет.
Пример следования Дзену:
Сравним два подхода к функции, удваивающей числа в списке.
# Не в духе Дзена: неявно изменяет исходный объект (side-effect)
def double_numbers_inplace(numbers_list):
for i, n in enumerate(numbers_list):
numbers_list[i] = n * 2
data = [1, 2, 3]
double_numbers_inplace(data) # Теперь data = [2, 4, 6]
# В духе Дзена: явно возвращает новый объект, не меняя старый
def double_numbers_explicit(numbers_list):
return [n * 2 for n in numbers_list]
data = [1, 2, 3]
new_data = double_numbers_explicit(data) # data остался [1, 2, 3]
Второй подход предпочтительнее, так как он более предсказуем и не имеет скрытых побочных эффектов, что полностью соответствует принципу "Явное лучше, чем неявное".
Ответ 18+ 🔞
Вот, смотри, эти питонисты, блядь, они не просто так код пишут, у них там целая философия, ёпта! Дзен называется, как у буддистов, только вместо медитации — отладка до охуения. Запустишь import this — и тебе вывалится 19 заповедей, типа как скрижали, только для программиста.
Основные идеи, если по-простому:
- Красивое лучше, чем уродливое. Ну это понятно, блядь. Код должен выглядеть так, чтобы на него не тошнило смотреть, а хотелось похвалить автора за аккуратность. Не эта каша из скобок и подчёркиваний, где нихуя не разберёшь.
- Явное лучше, чем неявное. Вот это, сука, самое важное! Если функция что-то делает — пусть делает это открыто, а не как хитрая жопа, которая тебе там исподтишка список переписывает, пока ты не видишь. Никаких сюрпризов, блядь!
- Простое лучше, чем сложного. Зачем городить огород из трёх этажей абстракций, если можно решить задачу одной строчкой? Умничанье — это путь в ад при поддержке, поверь мне.
- Читаемость имеет значение. Абсолютно, блядь, верно! Код читают в сто раз чаще, чем пишут. Ты его через месяц посмотришь и офигеешь: «Это чё за мудя тут написана?». А если он читаемый — сразу всё ясно, в рот меня чих-пых!
Смотри, как это работает на практике:
Вот тебе два варианта одной функции. Одна — как делают распиздяи, другая — как учат в Дзене.
# Вариант 1: В стиле "а похуй, главное работает". Мутатор, блядь, скрытный.
def double_numbers_inplace(numbers_list):
for i, n in enumerate(numbers_list):
numbers_list[i] = n * 2
data = [1, 2, 3]
double_numbers_inplace(data) # А теперь data = [2, 4, 6], и ты об этом можешь даже не сразу догадаться!
# Вариант 2: В стиле "всё честно, нахуй". Явный и предсказуемый.
def double_numbers_explicit(numbers_list):
return [n * 2 for n in numbers_list]
data = [1, 2, 3]
new_data = double_numbers_explicit(data) # data так и остался [1, 2, 3], а новый список — вот он, бери.
Второй вариант — это овердохуища как лучше. Почему? Да потому что он не пиздит! Он не меняет тебе данные за спиной. Ты сразу видишь, что на входе и что на выходе. Полная прозрачность, никаких подлянок. Это и есть тот самый принцип «Явное лучше, чем неявное» в действии. Красота, блядь!