python_per_month | Unsorted

Telegram-канал python_per_month - Python Learning

29261

№ 4974297878 Обучающий канал по Python Ссылка для друга - https://t.me/+I7jrAQKR5xAyYTAy По всем вопросам @mascarov_valentin Реклама на бирже - https://telega.in/c/Python_per_month

Subscribe to a channel

Python Learning

Acceptance Testing

Acceptance Testing — это процесс тестирования программного обеспечения, который направлен на проверку того, соответствует ли разработанное ПО заявленным требованиям и ожиданиям заказчика или пользователей. Это более высокий уровень тестирования, который выполняется после завершения разработки и интеграции всех компонентов системы.

Основной целью Acceptance Testing является убедиться, что ПО работает в соответствии с функциональными и нефункциональными требованиями, установленными для проекта.

#для_начинающих

Читать полностью…

Python Learning

🔥Приглашаем на открытый урок по аналитике данных.

Тема:
Базовый сбор требований в работе дата-аналитика

Урок пройдёт 23 августа в 20:00. Вебинар приурочен к старту онлайн-курса "Аналитик данных" от OTUS.

⚡️Что разберём на уроке:

-Жизненный цикл задачи в анализе данных;
-Какие вопросы нужно обязательно задавать и как правильно фиксировать ответы;
-Как преодолевать возражения и не заработать ненужный стресс в процессе.

Урок будет полезен:

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

Продолжить обучение можно на онлайн-курсе "Аналитик данных",
который можно приобрести в рассрочку.

💪Пройдите тестирование для регистрации на вебинар и оцените свой уровень в аналитике:
https://otus.pw/KHYd/

Нативная интеграция. Информация о продукте www.otus.ru

Читать полностью…

Python Learning

👉 Подключайтесь 24 августа в 20:00 в OTUS к открытому уроку «Работа с пакетами в Python с помощью pip и poetry».

💪 На занятии разберем оба пакетных менеджера, поговорим про основные сценарии использования, обсудим различия, узнаем, в каких случаях можно обойтись решением попроще, а в каких случаях требуется более продвинутый подход.

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

👉 Для участия и получения записи зарегистрируйтесь https://otus.pw/HI5X/

📌 Вебинар приурочен к старту онлайн-курса «Python Developer» для начинающих Python-разработчиков.
Нативная интеграция. Информация о продукте www.otus.ru

Читать полностью…

Python Learning

«Циклический сбор мусора»

«Циклический сбор мусора» — это процесс автоматической уборки памяти, занимаемой объектами, которые больше не доступны вашей программе. В Python есть встроенный механизм сборки мусора, который автоматически освобождает память, занимаемую объектами, на которые нет ссылок.

Вы можете влиять на этот процесс с помощью модуля gc (garbage collector).

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

#для_продвинутых

Читать полностью…

Python Learning

Сортировка пузырьком

Сортировка пузырьком (Bubble Sort) — это простой алгоритм сортировки, который многократно проходит через список, сравнивая пары соседних элементов и меняя их местами, если они стоят в неправильном порядке. Этот процесс повторяется до тех пор, пока весь список не будет отсортирован.

В данном коде функция bubble_sort принимает список arr, который нужно отсортировать. Основной цикл проходит по всем элементам списка, а вложенный цикл сравнивает соседние элементы и меняет их местами, если это необходимо. После завершения алгоритма, список будет отсортирован.

#для_продвинутых

Читать полностью…

Python Learning

Что такое args?

args — это сокращение от «arguments» (аргументы). Этот термин обычно используется в контексте определения функций с переменным числом аргументов.

Когда вы определяете функцию с *args в списке аргументов, это означает, что функция может принимать произвольное количество позиционных аргументов. args представляет собой кортеж (tuple), содержащий все переданные позиционные аргументы.

#для_начинающих

Читать полностью…

Python Learning

Контекстные менеджеры

Контекстные менеджеры (Context Managers) в Python представляют собой удобный способ для управления ресурсами и выполнения кода в определенных контекстах, таких как открытие и закрытие файлов, установка и освобождение блокировок, управление сетевыми соединениями и многие другие ситуации, требующие выполнения предварительных и завершающих операций.

Для создания своего собственного контекстного менеджера вам потребуется определить методы __enter__() и __exit__() в вашем классе. Метод __enter__() выполняется при входе в контекст, а метод __exit__() выполняется при выходе из контекста.

#для_начинающих

Читать полностью…

Python Learning

SciencePlots

SciencePlots - это библиотека, которая предоставляет стили для библиотеки Matplotlib, чтобы форматировать ваши графики для научных статей, презентаций и диссертаций.

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

В этом примере мы устанавливаем стиль 'science' из библиотеки scienceplots. Затем мы создаем данные для графика и строим график. В конце мы отображаем график с помощью plt.show().

Читать полностью…

Python Learning

dict comprehension

dict comprehension — это способ создания нового словаря путем применения выражения к каждому элементу другой последовательности, такой как список, кортеж или другой словарь. Это похоже на генератор списков, но результатом является словарь вместо списка.

#для_начинающих

Читать полностью…

Python Learning

__init__

__init__ является методом, который используется для инициализации объектов при создании экземпляров классов. Этот метод называется «конструктором» класса и выполняется автоматически при создании нового объекта данного класса.

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

#для_начинающих

Читать полностью…

Python Learning

Фабричный метод

Фабричный метод (Factory Method) — это паттерн проектирования, который позволяет создавать объекты определенного типа через интерфейс или базовый класс, но делегирует фактическое создание конкретных объектов подклассам. Это способ позволяет легко добавлять новые типы объектов без изменения существующего кода.

Пример на картинке показывает основы паттерна «Фабричный метод» в Python. В реальных ситуациях можно создавать более сложные иерархии продуктов и создателей, чтобы обеспечить более гибкую и расширяемую структуру кода.

Читать полностью…

Python Learning

📱 Apple теперь в Telegram!

Подписывайтесь: @Apple

Читать полностью…

Python Learning

Метакласс

Метакласс (metaclass) в Python — это класс, который определяет поведение других классов, которые являются его экземплярами. В некотором смысле метакласс можно рассматривать как «класс для классов». Он задает правила и ограничения для создания и работы классов.

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

Читать полностью…

Python Learning

exceptions

В Python и многих других языках программирования, exceptions (исключения) — это механизм, который позволяет обрабатывать ошибки и нестандартные ситуации во время выполнения программы. Когда возникает ошибка, Python генерирует исключение. Если исключение не обрабатывается, программа может завершиться с ошибкой.

В данном примере кода, операция x = 10 / 0 вызовет исключение ZeroDivisionError, так как нельзя делить на ноль. Однако благодаря конструкции try и except, программа не завершится с ошибкой. Вместо этого будет выведено сообщение «Произошла ошибка деления на ноль!».

Читать полностью…

Python Learning

Бинарный поиск

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

В этом примере функция binary_search принимает отсортированный массив arr и искомый элемент target. Она ищет элемент в массиве и возвращает его индекс, если он найден, и -1, если элемент отсутствует. Каждая итерация сужает диапазон поиска путем сравнения среднего элемента с искомым элементом и сдвига границ поиска в соответствии с результатом сравнения.

Читать полностью…

Python Learning

memory_profiler

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

Для использования memory_profiler вы должны установить его сначала. Это можно сделать с помощью инструмента установки пакетов Python, такого как pip.

#для_начинающих

Читать полностью…

Python Learning

Паттерн проектирования «Стратегия»

«Стратегия» (Strategy) является одним из шаблонов поведения, определенных в книге «Банды четырёх» (Gang of Four, GoF). Этот паттерн относится к категории поведенческих паттернов и решает задачу определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости. Это позволяет клиентскому коду выбирать нужный алгоритм независимо от его использования.

Основная идея паттерна «Стратегия» заключается в выделении алгоритмов в отдельные классы (стратегии) и предоставлении клиентскому коду возможности выбирать и подменять эти стратегии без изменения самого клиентского кода. Таким образом, паттерн способствует легкости поддержки, расширения и внесения изменений в систему.

#для_продвинутых

Читать полностью…

Python Learning

unit-тесты

Unit-тесты (или unittests) — это метод тестирования ПО, который позволяет проверить, работает ли отдельная единица кода (обычно функция или метод) так, как ожидается. Библиотека unittest входит в стандартную библиотеку Python и предоставляет набор инструментов для написания и выполнения тестовых сценариев.

Писать хорошие unit-тесты — это важный аспект разработки программного обеспечения. Хорошие тесты обеспечивают надежность и поддерживаемость кода, помогают выявлять ошибки и улучшать качество продукта.

#для_начинающих

Читать полностью…

Python Learning

Cтатический метод

В Python статический метод (staticmethod) — это метод, который привязан к классу, а не к экземпляру этого класса. Он не требует доступа к атрибутам и методам экземпляра, и может быть вызван независимо от создания экземпляра класса. Статические методы могут использоваться, например, для выполнения операций, которые связаны с классом в целом, но не требуют доступа к данным экземпляра.

Чтобы определить статический метод в классе, используется декоратор @staticmethod.

#для_начинающих

Читать полностью…

Python Learning

Аннотации типов

Аннотации типов (type annotations) — это способ указания ожидаемых типов данных для аргументов функций, возвращаемых значений функций и переменных. Они позволяют явно указать, какие типы данных ожидаются или возвращаются, и могут быть использованы инструментами статического анализа для проверки соответствия типов.

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

#для_начинающих

Читать полностью…

Python Learning

__slots__

__slots__ — это специальный атрибут в Python, который может использоваться в классах для определения списка атрибутов (полей), которые разрешено создавать для экземпляров этого класса. Он используется для оптимизации использования памяти и ускорения доступа к атрибутам.

Обычно, когда вы создаете экземпляр класса, Python создает словарь для хранения всех атрибутов этого экземпляра. Это занимает дополнительную память и может вызвать небольшое замедление при доступе к атрибутам. А использование slots позволяет определить, какие атрибуты можно создавать для экземпляров класса, и Python будет использовать более компактное представление данных, что уменьшит расход памяти.

#для_продвинутых

Читать полностью…

Python Learning

Codeby Academy открывает осенний набор на один из своих лучших курсов - «Python для Пентестера»

Старт: 4 сентября
Длительность: 3 месяца

На курсе будем изучать продвинутые техники использования Python, научимся писать прикладной софт, который используется пентестерами в их профессиональной деятельности. Максимум практики, чат с живым общением и поддержка преподавателей!

🐍После 3-месячного онлайн-курса «Python для пентестера» вы сможете:

➡️Эффективно использовать базы данных и сеть Интернет;
➡️Получать данные от сайтов в автоматическом режиме;
➡️Писать прикладные программы на Python.

🏆 Выдаём сертификат при успешной сдаче экзамена

А по промокоду OFFZONE2023 вы получите дополнительную скидку 10%

📌 Узнать подробнее о курсе

Читать полностью…

Python Learning

Цикломатическая сложность

Цикломатическая сложность (Cyclomatic Complexity) — это метрика, используемая для оценки сложности кода на основе количества путей выполнения в программе. Эта метрика была предложена Томасом МакКейбом в 1976 году и обычно используется для определения того, насколько сложно будет тестирование и сопровождение данного кода.

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

#для_продвинутых

Читать полностью…

Python Learning

Паттерн проектирования «Фасад»

Паттерн проектирования «Фасад» (Facade) используется для предоставления унифицированного интерфейса к группе интерфейсов подсистемы. Он позволяет скрыть сложность и детали взаимодействия между различными компонентами системы, предоставляя клиенту более простой и удобный способ взаимодействия.

#для_продвинутых

Читать полностью…

Python Learning

Что такое _slots_?

__slots__ — это особый атрибут класса, который позволяет определить ограниченное множество атрибутов (полей) для экземпляров данного класса. Использование __slots__ может существенно снизить расход памяти для объектов класса и ускорить доступ к атрибутам, но оно также вносит некоторые ограничения и ограничения.

Обычно вы можете добавлять атрибуты к объектам класса динамически, потому что они хранятся в словаре. Однако это может вызвать избыточные затраты на память и небольшое замедление доступа к атрибутам из-за поиска по словарю. Атрибуты, определенные через __slots__, фактически резервируют место в памяти напрямую в экземпляре класса, что уменьшает объем памяти, требуемый для хранения объектов.

Читать полностью…

Python Learning

Дескрипторы

Дескрипторы — это механизм, который позволяет контролировать доступ к атрибутам классов. Они предоставляют способ определения специальных методов для доступа, присваивания и удаления атрибутов. Дескрипторы часто используются для реализации логики, связанной с доступом к данным, внутри классов.

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

Читать полностью…

Python Learning

Как работает thread locals?

Thread-local storage обеспечивает механизм для сохранения данных, которые будут доступны только в рамках определенного потока выполнения. Это полезно, когда вы хотите иметь раздельные данные для каждого потока, но не хотите делить их между разными потоками.

Вы можете использовать класс threading.local(), чтобы создать объект, который будет представлять thread-local storage. В этом объекте вы можете хранить любые данные, и они будут видимы только для текущего потока. Каждый поток будет иметь свою собственную копию объекта threading.local().

Читать полностью…

Python Learning

introspection

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

Например, в Python вы можете использовать функции и атрибуты, такие как dir(), type(), getattr(), hasattr(), locals(), globals() и другие, чтобы получить информацию о переменных, объектах и их атрибутах. Это может быть полезно при отладке, создании обобщенных функций или динамической загрузке модулей.

Читать полностью…

Python Learning

❗️Как развиваться Python-разработчику?

Наращивать объем знаний и навыков. За этим приходите на вебинар, приуроченный к старту онлайн-курса «Python Developer. Professional» в OTUS.

✅ 15 августа — «Code review»
Обсудим основы разработки API с помощью фреймворка FastAPI, рассмотрим пример небольшого приложения и осветим особенности развертывания эксплуатации.

🧑‍💻 Спикером выступит Станислав Ступников, руководитель разработки в VK. Эксперт с 10+ лет опыта промышленной разработки.

💪 Погрузим вас в современную «промышленную» разработку на Python. Главный фокус курса на основных Software Engineering компетенциях Python-разработчика и формировании прагматичного подхода к решению задач.

👉 ПРОЙТИ ТЕСТ для регистрации на открытый урок
https://otus.pw/LZMQ/

Нативная интеграция. Информация о продукте www.otus.ru

Читать полностью…

Python Learning

Задача

У вас есть девять цифр: 1, 2, …, 9. Именно в таком порядке. Вы можете вставлять между ними знаки «+», «-» или ничего. У вас будут получаться выражения вида 123+45-6+7+89. Найдите все из них, которые равны 100.

Мне кажется, в таком виде его проще всего и писать и читать и тестировать. Тут у меня три функции: all_combinations — итератор, который выдает все числа для операций (в терминах задачи: вставляет пустые места); all_signs — выдаёт все возможные сочетания знаков + и - заданной длинны (для единообразия, это тоже итератор с рекурсией); perform_operations — выполняет операции.

Тут, конечно, просится решение, избавленное от if-ов и кодирования операций с помощью символов. Но это решение будет более громоздким, о нём можно рассказать, но и писать, и читать его дольше.

Читать полностью…
Subscribe to a channel