Just Python
10.1K subscribers
4.46K photos
11 videos
4.45K links
🐍Простое изучение Python.

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: telega.in/c/justpython_it

РКН: clck.ru/3MnbSc
Download Telegram
Берегитесь ошибок из-за изменяемых аргументов по умолчанию в Python(ч.1)

Изменяемые аргументы функций по умолчанию в Python на самом деле не инициализируются при каждом вызове функции. Вместо этого в качестве значения по умолчанию используется недавно присвоенное им значение. Когда мы явно передали [] в some_func качестве аргумента значение default_arg переменной по умолчанию не использовалось, поэтому функция вернулась, как ожидалось.

#theory // Just Python & Max
Берегитесь ошибок из-за изменяемых аргументов по умолчанию в Python(ч.2)

Обычная практика, позволяющая избежать ошибок из-за изменяемых аргументов, заключается в присвоении None значения по умолчанию и последующей проверке, передается ли какое-либо значение функции, соответствующей этому аргументу

#theory // Just Python & Max
Если вы уже пробовали ChatGPT, DeepSeek или Cursor – вы знаете проблему: они помогают, но большую часть работы всё равно делаете вы.

Команда Зерокодера разобрала Claude Code и запустила бесплатный практикум, где в прямом эфире покажет, как собрать систему, в которой ИИ берет задачи на себя – без ручного кода и лишних сервисов.

Что вы получите на эфире:

– почему нейросети дают ответы, но не доводят задачи до результата – и как это исправить;
– как работать в одном окне без постоянных переключений;
– как делегировать рутину ИИ: от правок до тестов;
– как применять ИИ в работе: от MVP до автоматизаций и заработка;
– как перейти от «помощника» к системе, где ИИ реально выполняет задачи.

И главное – понятно объяснят, как из пользователя нейросетей перейти в того, кто использует ИИ на максимум.

🎁 Бонус: гайд по Claude Code + примеры внедрения

Бесплатный практикум – по ссылке.
Перехват исключений в Python(ч.1)

Чтобы добавить несколько исключений в предложение except, вам нужно передать их в виде кортежа в скобках в качестве первого аргумента. Второй аргумент - это необязательное имя, которое при указании будет привязывать созданный экземпляр исключения.

#theory // Just Python & Max
Перехват исключений в Python(ч.2)

Разделение исключения из переменной запятой устарело и не работает в Python 3; правильный способ - использовать as.

#theory // Just Python & Max
Те же операнды, другая история в Python! (ч.1)

a += b не всегда ведет себя так же, как a = a + b. Классы могут по-разному реализовывать op= операторы, и списки делают это.

Выражение a = a + [5,6,7,8] генерирует новый список и устанавливает a ссылку на этот новый список, оставляя b без изменений.

#theory // Just Python & Max
Те же операнды, другая история в Python! (ч.2)

Выражение a += [5,6,7,8] на самом деле сопоставлено с функцией "extend", которая работает со списком таким образом, что a и b по-прежнему указывают на тот же список, который был изменен на месте.

#theory // Just Python & Max
Разрешение имен, игнорирующее область видимости класса в Python(ч.1)

Области, вложенные внутри определения класса, игнорируют имена, связанные на уровне класса.

#theory // Just Python & Max
Разрешение имен, игнорирующее область видимости класса в Python(ч.2)

Выражение генератора имеет свою собственную область видимости.

Начиная с Python 3.X, понимание списков также имеет свою собственную область.

#theory // Just Python & Max
Округляет, как банкир в Python(ч.1)

Давайте реализуем наивную функцию для получения среднего элемента списка

Это не ошибка точности с плавающей запятой, на самом деле, такое поведение является преднамеренным. Начиная с Python 3.0, round() использует округление банкира, где дроби .5 округляются до ближайшего четного числа:

#theory // Just Python & Max
Синтаксис в Python

Синтаксис представления списков обеспечивает простой и надежный способ для создания новых списков из уже существующих. Допустим, нам нужен новый список, в котором каждый элемент старого списка будет умножен на 3. При помощи цикла for мы можем это сделать.

#theory // Just Python & Max
Enum перечисления в Python

Этот класс можно назвать удобным способом инкапсуляции списка констант, чтобы они не были разбросаны по всему коду без структуры.

#theory // Just Python & Max
Округляет, как банкир в Python(ч.2)

Это рекомендуемый способ округления дробей .5, как описано в IEEE 754. Однако в школе большую часть времени преподают другой способ (округление от нуля), поэтому округление банкира, вероятно, не так хорошо известно. Кроме того, некоторые из самых популярных языков программирования (например: JavaScript, Java, C / C ++, Ruby, Rust) также не используют банковское округление.

Следовательно, это все еще довольно специфично для Python и может привести к путанице при округлении дробей.

Смотрите Документы round() или этот поток stackoverflow для получения дополнительной информации.

Обратите внимание, что get_middle([1]) было возвращено только 1, потому что индекс был round(0.5) - 1 = 0 - 1 = -1, возвращая последний элемент в списке.

#theory // Just Python & Max
Иголки в стоге сена в Python(ч.1)

Для 1 правильным утверждением для ожидаемого поведения является x, y = (0, 1) if True else (None, None).

#theory // Just Python & Max
Иголки в стоге сена в Python(ч.2)

Для 2 правильным выражением для ожидаемого поведения является t = ('one',) or t = 'one', (пропущенная запятая), в противном случае интерпретатор считает, что t это str и повторяет его посимвольно.

() является специальным маркером и обозначает пустой tuple.

#theory // Just Python & Max
Иголки в стоге сена в Python(ч.3)

В 3, как вы, возможно, уже поняли, после 5-го элемента ("that") в списке отсутствует запятая. Итак, с помощью неявной конкатенации строковых литералов,

>>> ten_words_list
['some', 'very', 'big', 'list', 'thatconsists', 'of', 'exactly', 'ten', 'words']


#theory // Just Python & Max
Иголки в стоге сена в Python(ч.4)

В 4-м фрагменте на AssertionError был поднят вопрос, потому что вместо утверждения отдельного выражения a == b мы утверждаем весь кортеж. Следующий фрагмент прояснит ситуацию,

>>> a = "python"
>>> b = "javascript"
>>> assert a == b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError

>>> assert (a == b, "Значения не равны")
<stdin>:1: SyntaxWarning: assertion is always true, perhaps remove parentheses?

>>> assert a == b, "Значения не равны"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError: Values are not equal


#theory // Just Python & Max
Иголки в стоге сена в Python(ч.5)

Что касается пятого фрагмента, большинство методов, которые изменяют элементы объектов последовательности / сопоставления, такие как list.append, dict.update, list.sort и т.д. измените объекты на месте и верните None. Обоснование этого заключается в повышении производительности за счет отказа от создания копии объекта, если операция может быть выполнена на месте.

#theory // Just Python & Max
Иголки в стоге сена в Python(ч.6)

Последний должен быть довольно очевидным, изменяемым объектом (например list) может быть изменен в функции, и переназначение неизменяемого (a -= 1) не является изменением значения.

#theory // Just Python & Max
Совет на ближайшие годы — изучайте ВАЙБ-КОДИНГ

ИИ уже пишет код, чинит баги, генерирует тесты, документацию и помогает запускать продукты быстрее, чем это делали классические команды разработки. И это уже не "будущее когда-нибудь", а реальность, которая меняет рынок уже сегодня

И те, кто научится вайбкодить сейчас, будут увереннее конкурировать на рынке и зарабатывать больше тех, кто по-прежнему делает всё вручную.

Стартовать с нуля поможет канал Вайб-кодинг. Там ребята круглосуточно мониторят более 320 российских и зарубежных источников и публикуют только главное: релизы, инструменты, гайды, курсы и практические кейсы.

Подписывайтесь, нас уже 30 тысяч: @vibecoding_tg