Программы для программирования
20 subscribers
849 photos
1 video
26 files
41 links
Download Telegram
Forwarded from Python Education
SciPy: Расстояние Хэмминга

Расстояние Хэмминга — это метрика для сравнения двух строк двоичных данных. При сравнении двух двоичных строк одинаковой длины расстояние Хэмминга — это количество битовых позиций, в которых два бита различны. Используется для обнаружения или исправления ошибок при передаче данных по компьютерным сетям. Также применим в теории кодирования для сравнения слов данных одинаковой длины.
Forwarded from Python Education
Функция reduce

Модуль functools позволяет хорошо раскрыть функциональные возможности Python. Например, в functools есть интересная функция reduce, которая позволяет «сжимать» данные, применяя последовательно функцию и запоминая результат.

Таким образом, в примере выше reduce умножает 1 на 2, затем результат этого умножения на 3 и так далее.
Forwarded from Python Education
Управление экспортами

В некоторых языках имеются очень чёткие механизмы экспорта из модулей переменных, методов, интерфейсов. К примеру в Go экспортируются только сущности с именами с большой буквы. В Python другая картина — экспортируется всё. Но только не при использовании атрибута all .

В примере на картинке экспортируется только функция hja. А если оставить атрибут all пустым, при попытке экспорта из модуля ничего не будет экспортировано, но возникнет ошибка AttributeError.
Forwarded from Python Education
Отлавливаем ошибки с помощью assert

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

Если выполнить инструкцию assert с логическим выражением, результат которого равен True, ничего не произойдет. Но в случае с False будет сгенерировано исключение AssertionError.

Однако не нужно пытаться обработать исключение AssertionError блоком try-except. В таком случае assert теряет свой смысл.

В примере мы проверили, является ли переданный аргумент числовым типом данных. Если не является, то будет вызвано исключение и выведено указанное сообщение.
Forwarded from Python Education
TypeGuard

TypeGuard позволяет писать любое выражение и сообщать твоему средству проверки типов, что оно их сужает. Функция сужения типа — это функция, которая принимает хотя бы один аргумент и возвращает bool. Вместо пометки возвращаемого типа как bool используется TypeGuard[T], где True означает, что первый аргумент имеет тип T, а False — нет.
Forwarded from Python Education
Паттерн проектирования Singleton

Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.

Метод new вызывается для создания экземпляра класса перед вызовом init. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).

В примере мы проверяем, есть ли значение у атрибута instance. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если экземпляр уже создан, то просто его возвращаем.

То есть при вызове конструктора класса Singleton будет возвращаться один и тот же объект из памяти
Forwarded from Python Education
Кэшированные атрибуты

Во встроенном пакете functools присутствует декоратор @cached_property, позволяющий кэшировать результат метода и загнать его в атрибут.

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

Подобное кэширование полезно в случаях, когда в методе производятся вычисления, которые нагружают систему и занимают много времени.
Forwarded from Python Education
Биномиальное распределение

Биномиальное распределение — это дискретное распределение. Оно описывает результат бинарных сценариев. К примеру, подброс монетки. Имеется три параметра: n - количество испытаний; p - вероятность появления каждого испытания (например, при подбрасывании монеты по 0,5); size - форма возвращаемого массива.
Forwarded from Python Education
wxPython: Контекстное меню и панель инструментов

Меню группируют все команды, которые ты можешь использовать в приложении. Панели инструментов обеспечивают быстрый доступ к наиболее часто используемым командам.
Forwarded from Python Education
Упрощение создания операторов сравнения

Декоратор functools total ordering используется здесь для упрощения процесса реализации упорядочения экземпляров класса. Для обеспечения его работы нужно лишь чтобы были объявлены операторы сравнения lt и eq. Это — тот минимум, который нужен декоратору для конструирования остальных операторов сравнения.
Forwarded from Python Education
Метод файла file.readlines() читает файловый объект file построчно, пока не достигнет конца файла EOF и возвращает список, содержащий строки или байтовые объекты файла в зависимости от режима, в котором открыт файл функцией open(). Конечный символ новой строки n сохраняется в строке.

Если присутствует необязательный аргумент sizehint, то читаются целые строки, составляющие приблизительно sizehint байт (округляется до внутреннего размера буфера).

Пустая строка возвращается только по достижении конца файла, т. е. EOF встречается немедленно.
Forwarded from Python Education
Работа с ip адресами

Если вам приходится писать на Python программы для работы с сетью — это значит, что вам может очень пригодиться модуль ipaddress.

Одним из вариантов его использования является генерация списка IP-адресов из диапазона адресов, заданных в формате CIDR (Classless Inter-Domain Routing, или бесклассовая адресация).
Forwarded from Python Education
NumPy: Разделение массивов

Разделение — это операция, обратная объединению. Объединение сливает несколько массивов в один, а разделение разбивает один массив на несколько. С помощью array split() ты можешь разделить массив. Ты передаешь массив, который хочешь разбить, и количество разбиений.
Forwarded from Python Education
Библиотека subprocess

Данная библиотека как ни странно, помогает работать с процессами. С ней можно, к примеру, вызвать какое-то приложение. Пусть это будет командная строка.

Кроме этого, можно проверить ответ от какого-то сайта. Делается это через расчет ping.

Про еще большее количество возможностей расскажем в следующем посте.
Forwarded from Python Education
Библиотека Flask

Как вы уже догадались контент можно вставлять переменными. Достаточно воспользоваться форматированием строк (f"a + 1={a + 1}"). Но тогда код получится слишком огромным. Вы можете составить шаблон прямо в html коде и сохранить его как отдельную страницу. А затем при выдаче он будет просто выполнен. К примеру в файле 'index.html' будет лежать такой код: '<h1>{{name}}</h1><p>{{content}</p>'

В flask шаблонах используем {{}} вместо {} для вставки переменных. Доступны циклы и условия, но они добавляются по-другому. Об этом позже. И для выполнения года надо рендерить страницу.
Forwarded from Python Education
Библиотека subprocess

И в заключение покажем интересную и в некотором роде полезную программу, которая показывает все wi-fi сети.

Мы еще не использовали check_output, он выполняет команду и возвращает ее вывод. Похожее мы уже проделывали в прошлом посте.

Не забывайте, что иногда требуется остановить или даже "убить" процесс. Это делается методами класса Popen, а именно terminate() и kill().

С данным модулем можно выполнить очень много полезных действий, которые недоступны интерпретатору Python при других путях решения.
Forwarded from Python Education
Ищем ошибки с помощью assert

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

Если выполнить инструкцию assert с логическим выражением, результат которого равен True, то ничего не произойдет. Но в случае с False будет сгенерировано исключение AssertionError.

Однако не нужно пытаться обработать исключение AssertionError блоком try-except, так как assert тогда теряет свой смысл.

В примере на картинке проверяется, является ли переданный аргумент числовым типом данных. Если не является, то будет вызвано исключение и выведено указанное сообщение.
Forwarded from Python Education
Выполнение функций по заданному расписанию

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

Она позволяет описать в декораторе конфигурацию расписания, согласно которому метод будет запускаться. В примере выше функция hi будет выполняться каждые 30 минут.
Forwarded from Python Education
Метод repr() позволяет определять строковое представление, предназначенное для программиста и удобное при использовании во время отладки, а метод str() позволяет определять понятное пользователю строковое представление, которое можно отображать в интерфейсе программы.
Forwarded from Python Education
Метод rindex

Метод занимается поиском подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError.

Метод возвращает наибольший индекс совпадения символа/подстроки.