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

Python полон удивительных функций и трюков, которые заставляют вас думать: «Ух ты! Python так крут!». Мы собрали несколько функций, которые нам особенно нравятся. Мы надеемся, что вы узнаете что-то, что заставит вас сказать: «Вот это да! Я этого не знал».
Исходный код на GitHub , если у вас есть идеи по его улучшению, добро пожаловать!

Генератор представляет собой объект, который создает последовательность значений. Он может использоваться как итератор, а это означает, что вы можете применять его с оператором for или использовать функцию next для получения следующего значения. Однако перебирать значения вы можете только один раз.
Генератор может быть создан благодаря функции, ключевым словом которой служит yield (создает значение). Когда вызывается функция генератора, создается объект-генератор.

Для простых случаев можно создать генератор, используя выражение-генератор. В отличие от списка, значения будут вычисляться «на лету», а не захламлять ими память для одноразового вычисления.

Collections представляет собой модуль в стандартной библиотеке, которая реализует контейнеры альтернативных типов данных.
Например, counter представляет собой совокупность элементов, которые хранятся в виде ключей словаря, а их счетчики в виде значений словаря:

Defaultdict подкласс dict, который позволяет использовать функцию factory, используемую для автоматического создания нового значения , в случае отсутствия ключа.

Defaultdict может быть использован для создания древовидной структуры данных!

itertools представляет собой модуль в стандартной библиотеке , позволяющий создавать итераторы для эффективного зацикливания.
Например, permutations позволяет генерировать все возможные способы упорядочения набора вещей:

Аналогичным образом , combinations создает все возможные способы выбора предметов из коллекции, так , что ( в отличии от permutations) порядок не имеет значения:

itertools также содержит вспомогательные функции , такие как chain, которая принимает итерируемую и создает новый итератор , который возвращает элементы из данных поочередно, в виде одной последовательности:

* – оператор, известный как распаковочный или splat-оператор, позволяет делать очень удобные преобразования, переходя из списков или кортежей отдельной переменной или аргументов и наоборот.

Когда аргументы вашей функции уже в списке или в кортеже, вы можете распаковать их с помощью * args , если это список, или ** kwargs , если это dict.

Возможна и обратная операция: вы можете определить функцию, которая будет упаковывать все аргументы в одном кортеже и все ключевые слова в один dict.

decorator функция, которая принимает функцию в качестве параметра и возвращает функцию.
Например, в коде ниже, кэш-функция используется в качестве decorator, чтобы хранить числа Фибоначчи, которые уже были вычислены:

Functools модуль обеспечивает нас несколькими decorator-ами, такими как lru_cache , которые могут делать то , что мы сделали только что: запоминание. Он сохраняет недавние вызовы, чтобы сэкономить время, когда функция вызывается с теми же аргументами:

Менеджеры контекста в основном используются для правильного управления ресурсами. Наиболее часто они используются для открытия файла: open(‘workfile’, ‘r’) as f:. Однако большинство разработчиков не знают, как все они работают на самом деле и как создать свой собственный.
На самом деле, менеджер контекста это просто класс , который реализует методы __enter__ и __exit__.

В простых случаях можно использовать генератор функций с одним yield, используя декоратор @contextmanager .

Вы пропустили

AEGIS Algorithms Android Angular Apache Airflow Apache Druid Apache Flink Apache Spark API API Canvas AppSec Architecture Artificial Intelligence Astro Authentication Authorization AutoGPT AWS AWS Aurora AWS Boto3 AWS EC2 AWS Lambda Azure Babylon.js Backend bash Beautiful Soup Bento UI Big Data Binary Tree Browser API Bun Career Cassandra Charts ChatGPT Chrome Extension Clean Code CLI ClickHouse Coding Codux Combine Compose Computer Context Fusion Copilot Cosmo Route CProgramming cron Cryptography CSS CTF Cypress DALL-E Data Analysis Data science Database dbt dbt Cloud deno Design Design Patterns Detekt Development Distributed Systems Django Docker Docker Hub Drizzle DRY DuckDB Express FastAPI Flask Flutter For Beginners Front End Development Game Development GCN GCP Geospatial Git GitHub Actions GitHub Pages Gitlab GMS GoFr Golang Google Google Sheets Google Wire GPT-3 GPT3 Gradio Gradle Grafana Graphic Design GraphQL gRPC Guidance HMS Hotwire HTML Huawei HuggingFace IndexedDB InfoSec Interview iOS Jackknife Java JavaScript Jetpack Compose JSON Kafka Kotlin Kubernetes LangChain Laravel Linux LlaMA LLM localStorage Logging Machine Learning Magento Math Mermaid Micro Frontends Mobile Mobile App Development mondayDB MongoDB Mongoose MySQL Naming NestJS NET NetMock Networks NextJS NLP Node.js Nodejs NoSQL NPM OOP OpenAI OTP Pandas PDF PHP Playwright Plotly Polars PostgreSQL Prefect Productivity Programming Prometheus Puppeteer Pushover Python Pytorch Quarkus Rabbitmq RAG Ramda Raspberry Pi React React Native Reactor Redis REST API Revolut Riverpod RProgramming Ruby Ruby on Rails Rust Scalene SCDB ScyllaDB Selenium Servers Sklearn SLO SnowFlake Snowkase Software Architecture Software Development Solara Solid Spring Boot SQL SQLite Streamlit SudoLang Supabase Swift SwiftUI Tailwind CSS Taipy Terraform Testing Transformers TURN TypeScript Ubuntu UI Design Unix UX UX Design Vim Vite VSCode Vue Web Architecture Web Components Web Development Web Frameworks Web Scraping Web-разработка Webassembly Websocket Whisper Widgets WordPress YAML YouTube Zed Наука о данных Разное Тренды

Как исследовать и визуализировать данные МО для обнаружения объектов на изображениях