Python Learning
31.7K subscribers
1.98K photos
8 videos
7 files
995 links
№ 4974297878

Обучающий канал по Python

Ссылка для друга - https://t.me/+I7jrAQKR5xAyYTAy

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Python_per_month
Download Telegram
🚫 Антипаттерн недели: Использование вложенных циклов для обработки больших данных

Вложенные циклы при обработке больших объёмов данных значительно снижают производительность, особенно если внутри вложенного цикла выполняются сложные операции. Это приводит к избыточному времени выполнения программы.

✔️ Используйте встроенные функции и методы, такие как zip, enumerate или библиотеку numpy, чтобы сократить количество циклов.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
🚫 Антипаттерн недели: Неоптимальная фильтрация данных через циклы

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

✔️ Используйте встроенные функции, такие как filter() или list comprehension, чтобы сделать код более читаемым и производительным.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
⚙️ traceback.format_exc()

Метод traceback.format_exc() из модуля traceback используется для получения форматированной строки трассировки исключения. Это полезно для логирования ошибок или их анализа.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7😱1
Что будет выведено при выполнении кода?

Пояснение
⬇️
Оператор is проверяет, указывают ли обе переменные на один и тот же объект в памяти. Переменные x и y ссылаются на один объект, поэтому x is y возвращает True. Переменная z — новый объект с тем же содержимым, но другой областью в памяти, поэтому x is z возвращает False.


Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🚫 Антипаттерн недели: Неоптимальная проверка на принадлежность в списке

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

✔️ Используйте set для проверки на принадлежность, чтобы снизить время выполнения до O(1).

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
⚙️ contextlib.nested

Модуль contextlib в Python позволяет обрабатывать несколько ресурсов с помощью менеджеров контекста более лаконично. Это полезно, когда работа идёт с большим числом файлов или объектов.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Изучили базу по Python и не знаете, как кодить еще лучше?
Пройдите бесплатный курс по настройке инструментов Python в Академии Selectel.

Рассказываем, что изучать после основ и как не зациклиться на типовых навыках на старте. В программе курса:

🔸 освоим Python-инструменты для упрощения работы с кодом: SonarLint, Myry и другие;
🔸 протестируем библиотеку Tkinter, чтобы создавать приложения с графическим интерфейсом;
🔸 расскажем, как парсить данные с веб-сайтов и закрепить полученные знания на практике.

Все материалы бесплатные. Проходите курс в комфортном темпе в Академии Selectel: https://slc.tl/4vqkv

Реклама. АО "Селектел". erid:2W5zFG1xKC4
👍1
⚙️ concurrent.futures.as_completed()

Метод concurrent.futures.as_completed() позволяет обрабатывать завершение асинхронных задач в порядке их завершения. Это полезно для параллельной обработки, где важно начать работу с результатами, как только они готовы.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤔1
⚙️ shutil.disk_usage()

Метод shutil.disk_usage() из модуля shutil предоставляет информацию о месте на диске, включая общий объём, используемое и доступное пространство. Это полезно для мониторинга состояния файловой системы.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
⚙️ itertools.permutations()

Метод itertools.permutations() генерирует все возможные перестановки элементов заданной последовательности. Это полезно для задач, связанных с комбинаторикой.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
⚙️ __slots__

Метод __slots__ позволяет явно указать, какие атрибуты может иметь объект класса, что значительно уменьшает потребление памяти и ускоряет доступ к атрибутам. Это особенно полезно при создании большого количества экземпляров класса.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🔍Тестовое собеседование на Middle Python с Senior из X5 уже завтра!

Уже завтра(11 ноября) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.

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

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос на собеседовании

Как работает weakref в Python, и когда его стоит использовать?

Ответ ⬇️
Модуль weakref позволяет создавать слабые ссылки на объекты, которые не предотвращают их сборку мусора. Это полезно, когда нужно отслеживать объекты без продления их времени жизни, например, в кешах или при управлении зависимостями в больших структурах данных.

Пример использования ⚙️
import weakref

class Data:
def __del__(self):
print("Объект удалён")

obj = Data()
weak_ref = weakref.ref(obj)

print(weak_ref()) # <__main__.Data object at 0x...>
del obj
print(weak_ref()) # None (объект удалён)


Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🚫 Антипаттерн недели: Использование range(len()) вместо enumerate()

В Python часто используют range(len(lst)) для итерации по списку с индексами, но это снижает читаемость кода и не является идиоматичным способом перебора элементов.

✔️ Используйте enumerate(), который позволяет одновременно получать индекс и значение элемента, делая код более читаемым и питоничным.

Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥1💔1
⚙️ dis.Bytecode()

Метод dis.Bytecode() из модуля dis позволяет анализировать байт-код Python-функций. Это полезно для оптимизации кода и понимания его работы на уровне интерпретатора.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
🚫 Антипаттерн недели: Использование mutable default arguments

В Python опасно использовать изменяемые объекты (списки, словари, множества) как значения по умолчанию в аргументах функций. Это приводит к непредсказуемому поведению, так как объект создаётся один раз при определении функции и сохраняет своё состояние между вызовами.

✔️ Используйте None в качестве значения по умолчанию и создавайте новый объект внутри функции.

Python Learning
👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
⚙️ threading.Timer()

Метод threading.Timer() позволяет создавать таймеры, которые выполняют определенную функцию через заданный интервал времени. Это полезно для отложенного выполнения задач без блокировки основного потока.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
⚙️ dataclasses.astuple()

dataclasses.astuple() преобразует объект dataclass в неизменяемый кортеж, что удобно для сериализации и работы с неизменяемыми структурами.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6😁1
⚙️ inspect.getgeneratorstate()

inspect.getgeneratorstate() позволяет определить текущее состояние генератора. Это полезно при отладке и анализе работы генераторов в Python, чтобы понимать, активен ли генератор, завершён или ожидает ввода.

Python Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5