Just Python
10.2K subscribers
4.39K photos
11 videos
4.37K links
🐍Простое изучение Python.

Ссылка: @Portal_v_IT

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

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

РКН: clck.ru/3MnbSc
Download Telegram
Глобально уникальный идентификатор в Python

Стандартный модуль uuid — быстрый и простой способ сгенерировать UUID (universally unique identifier, глобально уникальный идентификатор).

Так мы создаём случайное 128-битное число, которое почти наверняка будет уникальным.

Существует более 2¹²² возможных UUID. Это более 5 ундециллионов или 5,000,000,000,000,000,000,000,000,000,000,000,000.

Вероятность нахождения дубликатов в заданном наборе крайне мала. Даже при наличии триллиона UUID вероятность того, что среди них есть дубликат, гораздо меньше, чем один к миллиарду.

#theory // Just Python
Модуль newspaper3k для работы с мета-данными

Если вы ещё с ним не встречались, то приготовьтесь к тому, что модуль newspaper снесёт вам крышу.

Он даёт возможность извлекать статьи и связанные мета-данные из множества разных источников. Можно извлечь изображения, текст и имена авторов.

В нём даже есть встроенная NLP-функциональность.

Поэтому, если вы собиралисьe использовать BeautifulSoup или другую библиотеку для вебскрапинга в своём следующем проекте, лучше сэкономьте своё время и силы и установите newspaper

#modules // Just Python
Полное копирование

Глубокая копия создает новую и отдельную копию всего объекта или списка со своим уникальным адресом памяти. Это означает, что любые изменения, внесенные вами в новую копию объекта или списка, не будут отражаться в исходной. Этот процесс происходит следующим образом: сначала создается новый список или объект, а затем рекурсивно копируются все элементы из исходного в новый.

Короче говоря, оба объекта становятся полностью независимы друг от друга. Это похоже на концепцию передачи по значению в таких языках, как C ++, Java и C #.

#theory // Just Python
Функция filter() для фильтрации списков

Функция filter() используется для создания списка, состоящего из значений, для которых функция возвращает true.

Так же, как и map(), эта функция может использовать в качестве параметра пользовательские функции, а также lambda-функции.

#theory // Just Python
issubclass()

Функция принимает 2 параметра, оба должны быть классами. Если первый унаследован от второго, то функция вернет True, иначе False

#theory // Just Python
Как присвоить первое непустое значение из ряда

Следующая инструкция присвоит переменной X первый непустой (имеющий истинное значение) объект из множества объектов A, B и С или None, если все предыдущие объекты окажутся пустыми. В простейшем виде эту особенность используют для задания значения по умолчанию

Аналогичным образом логический оператор and можно применять для нахождения первого ложного значения

#theory // Just Python
Объединение списков без цикла

Как бы вы решили задачу объединения списков разной длины без обхода элементов цикла?

Пусть и менее краткий, но более эффективный способ – применение модуля itertools

Заметим, что при работе с последовательностями многие полезные решения находятся в модулях стандартной библиотеки collections (контейнерные структуры данных) и itertools (операции над последовательностями). Внимательное прочтение документации модулей освободит вас от многих часов придумывания собственных «велосипедов».

#theory // Just Python
Как отсортировать по значениям словарь

Распространена практика использования словарей в качестве таблиц для хранения данных. Сортировка данных словаря по значениям ключей, а не самим ключам, нередко ставит в тупик. Задача решается довольно просто при помощи соответствующего аргумента функции сортировки

#theory // Just Python
Антипаттерн недели: Использование вложенных циклов для обработки больших данных

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

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

#theory // Just Python
Антипаттерн недели: Неоптимальная фильтрация данных через циклы

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

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

#theory // Just Python
sys.getrefcount()

Метод sys.getrefcount() позволяет получить количество ссылок на объект. Это полезно для анализа работы сборщика мусора и управления памятью в Python.

#theory // Just Python
asyncio.gather()

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

#theory // Just Python
inspect.getclosurevars()

Метод inspect.getclosurevars() из модуля inspect позволяет извлечь значения замыканий из функции. Это полезно для анализа внутреннего состояния функций с замыканиями.

#theory // Just Python
weakref.WeakValueDictionary()

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

#theory // Just Python
traceback.format_exc()

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

#theory // Just Python
os.getpid()

Метод os.getpid() возвращает идентификатор текущего процесса. Это полезно для отладки и мониторинга выполнения программ.

#theory // Just Python
uuid.uuid4()

Метод uuid.uuid4() из модуля uuid генерирует случайный UUID (универсально уникальный идентификатор), основанный на случайных данных. Это полезно для создания уникальных идентификаторов для объектов.

#theory // Just Python
pathlib.Path.exists()

Метод pathlib.Path.exists() используется для проверки существования файла или директории. Это удобный способ работы с файловой системой в Python.

#theory // Just Python
secrets.token_hex()

Метод secrets.token_hex() используется для генерации безопасных случайных токенов. Это полезно для создания уникальных идентификаторов, паролей или API-ключей.

#theory // Just Python
Антипаттерн недели: Использование mutable default arguments

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

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

#theory // Just Python
threading.Timer()

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

#theory // Just Python