Аналитика Telegram-канала
Подписчики
5 861
Охват за 24 ч
177
ER за 24 ч
3,02%
Публикаций
1 419
Динамика подписчиков
7 дней
30 дней
6 месяцев
Больше
22 окт25 окт28 окт
Показаны последние 7 дней
Больше истории →
Охваты публикаций
24.1025.1025.1026.1027.1028.10
43
Средний охват
78
Лучший результат
Показаны 6 публикаций — последние в канале
Больше статистики →
Упоминания
773
Упоминаний
17
Из них репостов
69
Каналов
1 069
Упоминаний
241
Из них репостов
71
Каналов
Последние посты
3 из 1 419 2 из 1 419Почему изменяемый аргумент по умолчанию сохраняет данные между вызовами?
Ответ: Значение по умолчанию вычисляется при выполнении определения функции, а не при каждом вызове. Если это список, следующие вызовы без аргумента получают тот же объект. Изменения в нём сохраняются. Если нужен новый список на каждый вызов, обычно используют None или отдельный маркер, а список создают внутри функции. Общее изменяемое значение допустимо только тогда, когда такое состояние действительно задумано.
Документация: значения аргументов по умолчанию
Основа вопроса: Python Questions for Senior and Lead, раздел Functions in Python.
➡️ Навигация: База знаний • Задачи • Собеседования • Вакансии
🐸 Библиотека программиста
ещё
18
1
28 окт, 15:04
Создаст ли deepcopy две независимые копии объекта, на который ссылаются дважды?
Ответ: Нет, если речь об обычных списках и одном вызове deepcopy: общие ссылки внутри копируемой структуры сохранятся.
Допустим, inner = [], а source = [inner, inner]. После result = copy.deepcopy(source) выражение result[0] is result[1] вернёт True. Обе позиции ссылаются на один новый вложенный список.
При этом result[0] is inner вернёт False: копия отделена от исходного списка.
deepcopy использует словарь memo с уже скопированными объектами. Он помогает обрабатывать циклы и не создавать новую копию одного объекта при каждой встрече в том же проходе.
Поэтому добавление элемента в result[0] будет видно через result[1], но не изменит inner.
Два отдельных вызова deepcopy(inner) обычно создадут два разных списка: у них отдельные проходы копирования. А пользовательский __deepcopy__ может задавать собственное поведение.
Подробнее в документации Python
🐸 Библиотека собеса по Python
ещё
78
3
27 окт, 15:05
Какой класс получит classmethod при вызове через наследника?
Ответ: Класс, через который выполнен вызов. Если унаследованный classmethod вызывают через Child, его параметр cls получает Child, даже если сам метод объявлен в Base.
Например, Base содержит фабричный метод from_text, который возвращает cls(text). Вызов Child.from_text('hello') создаст объект Child, если его конструктор принимает такой аргумент.
Поэтому classmethod удобен для альтернативных конструкторов, которые должны учитывать наследование. Если вместо cls жёстко написать Base, фабрика будет создавать Base и при вызове через наследника.
У staticmethod такого неявного аргумента нет: ему автоматически не передаются ни экземпляр self, ни класс cls.
Вызов classmethod через экземпляр тоже допустим. Тогда cls будет классом этого экземпляра, а сам экземпляр в качестве первого аргумента не передаётся.
Подробнее в документации Python
🐸 Библиотека собеса по Python
ещё
46
2
26 окт, 15:02
Похожие Telegram-каналы
Библиотека задач по Python | тесты, код, задания
Библиотека питониста | Python, Django, Flask
Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
Продолжить анализ этого канала
- История роста подписчиков
- Просмотры и охваты публикаций
- Кто упоминает канал и кого упоминает он
- Похожие каналы и подбор для рекламы
Открыть аналитику
Демо до 14 дней