Forwarded from Python Education
Объект Ellipsis
В Python есть крайне интересный объект, который обозначается как
Применяется он зачастую при работе со срезами в Numpy, но и в обычном коде его тоже встретить можно. Например,
Если привести его к логическому типу данных, то увидим
#ellipsis
В Python есть крайне интересный объект, который обозначается как
..., то есть многоточие. Этот объект называется Ellipsis, и используется он в основном как заготовка для чего-то еще не реализованного.Применяется он зачастую при работе со срезами в Numpy, но и в обычном коде его тоже встретить можно. Например,
... периодически встречается в теле функции в качестве заглушки.Если привести его к логическому типу данных, то увидим
True — это важный момент, потому что похожий по своей сути None выдает False.#ellipsis
Forwarded from Python Education
Перегрузка операторов
Сначала стоит напомнить, что методы, которые начинаются и заканчиваются двойными нижними подчеркиваниями, называются магическими.
Например, выше в классе
Для перегрузки оператора
Таким образом, когда разработчик пишет запись
#классы
Сначала стоит напомнить, что методы, которые начинаются и заканчиваются двойными нижними подчеркиваниями, называются магическими.
Например, выше в классе
Point мы определили __str__, который отвечает за то, как выводятся объекты класса на экран.Для перегрузки оператора
"+" нужно определить метод __add__. Он принимает два аргумента, которыми являются, соответственно, операнды в операции сложения.Таким образом, когда разработчик пишет запись
p1 + p2, интерпретатор воспринимает это в виде Point.__add__(p1, p2). Для всех операторов в языке, включая и логические, есть свои магические методы. #классы
Forwarded from Python Education
Копирование словарей и других объектов
Новички часто допускают такую ошибку при создании копии списка:
Почему так происходит?
Об этом — в завтрашнем посте. Пока что расскажу, как этого избежать:
У списка существует специальный метод copy(), который нужен как раз для таких случаев.
Но подобное работает не всегда! Если имеется множество вложенных списков, то надо сделать полное копирование импортировав модуль copy и воспользовавшись методом deepcopy().
Новички часто допускают такую ошибку при создании копии списка:
= lst1При работе с одним из словарей оказывается, что изменяются оба.
Почему так происходит?
Об этом — в завтрашнем посте. Пока что расскажу, как этого избежать:
У списка существует специальный метод copy(), который нужен как раз для таких случаев.
Но подобное работает не всегда! Если имеется множество вложенных списков, то надо сделать полное копирование импортировав модуль copy и воспользовавшись методом deepcopy().
Forwarded from Python Education
Статические методы
Отличие статических методов от обычных в том, что они привязаны к классу, а не объекту. То есть они могут быть вызваны напрямую у класса.
Статический метод не принимает ни объект (
Реализовать статический метод можно двумя способами. Один из них — присвоить классу новый метод, напрямую передав изначальный метод в функцию
Но так делать не принято, поэтому чаще всего
#staticmethod
Отличие статических методов от обычных в том, что они привязаны к классу, а не объекту. То есть они могут быть вызваны напрямую у класса.
Статический метод не принимает ни объект (
self), ни класс (cls) в аргументах. То есть такие методы не могут модифицировать ни объект, ни сам класс. Реализовать статический метод можно двумя способами. Один из них — присвоить классу новый метод, напрямую передав изначальный метод в функцию
staticmethod. Но так делать не принято, поэтому чаще всего
staticmethod используют в качестве декоратора при написании методов прямо в классе. #staticmethod
Forwarded from Python Education
Находим файлы по шаблону
Основной фишкой модуля glob является удобная и лаконичная работа с поиском файлов по паттернам. Более того, можно даже пройтись по директориям рекурсивно.
В одноименный метод glob передаётся шаблон для поиска файлов, а возвращается список с результатами. Все методы следуют механизму и правилам сопоставления паттернов в стиле Unix.
Вообще модуль является встроенным, но в некоторых ситуациях импорт может выдать исключение. В таком случае надо просто его переустановить через пакетный менеджер pip.
Основной фишкой модуля glob является удобная и лаконичная работа с поиском файлов по паттернам. Более того, можно даже пройтись по директориям рекурсивно.
В одноименный метод glob передаётся шаблон для поиска файлов, а возвращается список с результатами. Все методы следуют механизму и правилам сопоставления паттернов в стиле Unix.
Вообще модуль является встроенным, но в некоторых ситуациях импорт может выдать исключение. В таком случае надо просто его переустановить через пакетный менеджер pip.
Forwarded from Python Education
Для создания пустых функций и классов есть сразу два способа соответствующих правилам PEP: "pass" и "...". Предпочтительнее использовать первый вариант. Он означает буквальным счетом пустоту, даже применить функции dir() или help() не получится. А вот три точки - объект.
Их применение более широкое. Мы видели точки, когда выводили бесконечный список. Но то, был просто вывод, а не наш объект. Ellipsis применяется так же для создания пустых списков. Он показывает, что внутри не что-то одно, а много. На практике его используют лишь в документации и при создании все тех же пустых функций.
На картинке пример программы проверяющий пароль от юзера. Сохранение в БД мы еще не решили как писать, поэтому просто создали заглушку.
Их применение более широкое. Мы видели точки, когда выводили бесконечный список. Но то, был просто вывод, а не наш объект. Ellipsis применяется так же для создания пустых списков. Он показывает, что внутри не что-то одно, а много. На практике его используют лишь в документации и при создании все тех же пустых функций.
На картинке пример программы проверяющий пароль от юзера. Сохранение в БД мы еще не решили как писать, поэтому просто создали заглушку.
Forwarded from Python Education
Сортировка пузырьком
Для сортировки списков в Python уже есть встроенные функция
Суть алгоритма в том, что совершается несколько проходов по массиву. При проходе последовательно сравниваются пары элементов в массиве и в случае несоответствия выбранному порядку меняются местами. Если пары элементов находятся в верном порядке, то ничего не происходит.
В результате первого прохода максимальный элемент окажется в конце, то есть всплывет словно пузырек. Затем все повторяется до того момента пока весь массив не будет отсортирован. Последний проход будет по отсортированному массиву.
#списки #сортировка
Для сортировки списков в Python уже есть встроенные функция
sorted() и метод .sorted(), но достаточно важно самому знать хотя бы несколько реализаций.Суть алгоритма в том, что совершается несколько проходов по массиву. При проходе последовательно сравниваются пары элементов в массиве и в случае несоответствия выбранному порядку меняются местами. Если пары элементов находятся в верном порядке, то ничего не происходит.
В результате первого прохода максимальный элемент окажется в конце, то есть всплывет словно пузырек. Затем все повторяется до того момента пока весь массив не будет отсортирован. Последний проход будет по отсортированному массиву.
#списки #сортировка
Forwarded from Python Education
Кортежи в циклах
Многие знают о том, что с помощью кортежей легко поменять местами значения переменных, однако у них есть более широкое применение.
Мы можем разбирать сложные составные массивы, списки с помощью кортежей и циклов. Это очень полезный, удобный инструмент.
Многие знают о том, что с помощью кортежей легко поменять местами значения переменных, однако у них есть более широкое применение.
Мы можем разбирать сложные составные массивы, списки с помощью кортежей и циклов. Это очень полезный, удобный инструмент.
Forwarded from Python Education
hex, oct, bin
Приходилось вам раньше работать с различными системами счисления? Если да, то вы знаете, как написать программу переводящую из одной системы в другую. Пишется она довольно просто, но иногда стоит задача быстро написать код с какой-то популярной системой счисления. Обычно это двоичная, восьмеричная или шестнадцатеричная. Для всех этих систем есть встроенные функции, которые переводят в нужную нам систему!
Из 10-ричной:
hex - перевод в 16-ричную систему
oct - перевод в 8-ричную систему
bin - перевод в 2-ичную систему
А из любой системы счисления можно получить число максимально простым способом:
Приходилось вам раньше работать с различными системами счисления? Если да, то вы знаете, как написать программу переводящую из одной системы в другую. Пишется она довольно просто, но иногда стоит задача быстро написать код с какой-то популярной системой счисления. Обычно это двоичная, восьмеричная или шестнадцатеричная. Для всех этих систем есть встроенные функции, которые переводят в нужную нам систему!
Из 10-ричной:
hex - перевод в 16-ричную систему
oct - перевод в 8-ричную систему
bin - перевод в 2-ичную систему
А из любой системы счисления можно получить число максимально простым способом:
int(number, base)Forwarded from Python Education
Библиотека Emoji
Смайлы стали неотъемлемой частью нашей жизни. И сейчас трудно представить сообщения без них. Поэтому существует библиотека, которая позволяет удобно использовать эмоджи.
С её помощью можно не только вставлять смайлы, но и находить их в тексте.
Можно комбинировать с другими библиотеками, данный модуль подойдет как для простого вывода, так и для украшения текста в ботах ВК или ТГ.
Ну а на картинке представим не работу библиотеки (она и так понятна), а интересный код, где вместо переменных используются эмоджи. Так делать нельзя, но код работает.
Смайлы стали неотъемлемой частью нашей жизни. И сейчас трудно представить сообщения без них. Поэтому существует библиотека, которая позволяет удобно использовать эмоджи.
С её помощью можно не только вставлять смайлы, но и находить их в тексте.
Можно комбинировать с другими библиотеками, данный модуль подойдет как для простого вывода, так и для украшения текста в ботах ВК или ТГ.
Ну а на картинке представим не работу библиотеки (она и так понятна), а интересный код, где вместо переменных используются эмоджи. Так делать нельзя, но код работает.
Forwarded from Python Education
Библиотека schedule
Гибкая библиотека для создания планировщика. Точнее с её помощью можно создавать задачи, которые будут выполняться с определенным интервалом. Промежуток настраивается как душе угодно и работает до выключения пользователем приложения.
Конечно можно было использовать стандартный таймер, но зачем изобретать велосипед? С данной библиотекой планировка задач станет намного проще и понятнее другим программистам.
Библиотеку необходимо установить:
Гибкая библиотека для создания планировщика. Точнее с её помощью можно создавать задачи, которые будут выполняться с определенным интервалом. Промежуток настраивается как душе угодно и работает до выключения пользователем приложения.
Конечно можно было использовать стандартный таймер, но зачем изобретать велосипед? С данной библиотекой планировка задач станет намного проще и понятнее другим программистам.
Библиотеку необходимо установить:
install scheduleForwarded from Python Education
Функции высшего порядка
Функции высшего порядка - функции принимающие или возвращающие другие функции. Очень говорящее название, запомнить очень просто
Чуть ранее мы говорили про lambda, они очень хорошо взаимодействуют с высшими функциями. Про одну из них мы говорили - map(). Она может принимать в себя лямбду, но это не дает такой большой функциональности.
Еще одна функция-итератор - filter()
Она поможет отфильтровать списки или итераторы. Первым принимает функцию, если она возвращает True, то пропускает элемент, вторым аргументом принимает список или итератор.
Не забывайте комбинировать функции!
Функции высшего порядка - функции принимающие или возвращающие другие функции. Очень говорящее название, запомнить очень просто
Чуть ранее мы говорили про lambda, они очень хорошо взаимодействуют с высшими функциями. Про одну из них мы говорили - map(). Она может принимать в себя лямбду, но это не дает такой большой функциональности.
Еще одна функция-итератор - filter()
Она поможет отфильтровать списки или итераторы. Первым принимает функцию, если она возвращает True, то пропускает элемент, вторым аргументом принимает список или итератор.
Не забывайте комбинировать функции!
Forwarded from Python Education
Избавляемся от вложенных циклов с помощью функции product
Вложенные циклы — настоящая головная боль. Они усложняют не только сам код, но и его читаемость. Выход из этих циклов — задача тоже сложная. Чтобы найти ошибку, приходится приложить много усилий, ведь нужно проверить каждый внутренний цикл.
К счастью, существует очень полезная встроенная функция — product. Она является частью встроенного модуля Python — itertools. С ее помощью мы можем избавиться от вложенных циклов.
Вложенные циклы — настоящая головная боль. Они усложняют не только сам код, но и его читаемость. Выход из этих циклов — задача тоже сложная. Чтобы найти ошибку, приходится приложить много усилий, ведь нужно проверить каждый внутренний цикл.
К счастью, существует очень полезная встроенная функция — product. Она является частью встроенного модуля Python — itertools. С ее помощью мы можем избавиться от вложенных циклов.
Forwarded from Python Education
Нахождение наиболее частых элементов списка
Если необходимо найти несколько наиболее часто повторяющихся значений, лучше воспользоваться счетчиком Counter из библиотеки collections.
Метод Counter.most common(x) возвращает x кортежей, в которых первое значение – элемент, а второе – количество его повторений.
Если необходимо найти несколько наиболее часто повторяющихся значений, лучше воспользоваться счетчиком Counter из библиотеки collections.
Метод Counter.most common(x) возвращает x кортежей, в которых первое значение – элемент, а второе – количество его повторений.
Forwarded from Python Education
MongoDB: Удаление документов
Чтобы удалить один документ, используй delete one(). Первый параметр метода delete one() — это объект запроса, определяющий, какой документ нужно удалить. Чтобы удалить более одного документа, используй метод delete many(). Чтобы удалить все документы в коллекции, передай пустой объект запроса в delete many().
Чтобы удалить один документ, используй delete one(). Первый параметр метода delete one() — это объект запроса, определяющий, какой документ нужно удалить. Чтобы удалить более одного документа, используй метод delete many(). Чтобы удалить все документы в коллекции, передай пустой объект запроса в delete many().
Forwarded from Python Education
Функция sorted сортирует любые итерируемые объекты по возрастанию и возвращает итоговый список, т.е. в переменную d будет сохранен список [a, b, c]
a, b, c = d — происходит неявная распаковка списка d в переменные a, b и c, вследствие чего каждой переменной будет присвоено соответствующее значение:
a = a
b = b
c = c
d = c, b, a — присваиваем переменной d кортеж (c, b, a), таким образом d будет равно (с , b , a )
''.join(d) — объединяем элементы кортежа в одну строку без использования разделителей и получаем "cba"
Затем получившуюся строку выводим на экран и получаем ответ — cba
a, b, c = d — происходит неявная распаковка списка d в переменные a, b и c, вследствие чего каждой переменной будет присвоено соответствующее значение:
a = a
b = b
c = c
d = c, b, a — присваиваем переменной d кортеж (c, b, a), таким образом d будет равно (с , b , a )
''.join(d) — объединяем элементы кортежа в одну строку без использования разделителей и получаем "cba"
Затем получившуюся строку выводим на экран и получаем ответ — cba
Forwarded from Python Education
SciPy: Расстояние Хэмминга
Расстояние Хэмминга — это метрика для сравнения двух строк двоичных данных. При сравнении двух двоичных строк одинаковой длины расстояние Хэмминга — это количество битовых позиций, в которых два бита различны. Используется для обнаружения или исправления ошибок при передаче данных по компьютерным сетям. Также применим в теории кодирования для сравнения слов данных одинаковой длины.
Расстояние Хэмминга — это метрика для сравнения двух строк двоичных данных. При сравнении двух двоичных строк одинаковой длины расстояние Хэмминга — это количество битовых позиций, в которых два бита различны. Используется для обнаружения или исправления ошибок при передаче данных по компьютерным сетям. Также применим в теории кодирования для сравнения слов данных одинаковой длины.
Forwarded from Python Education
Функция reduce
Модуль functools позволяет хорошо раскрыть функциональные возможности Python. Например, в functools есть интересная функция reduce, которая позволяет «сжимать» данные, применяя последовательно функцию и запоминая результат.
Таким образом, в примере выше reduce умножает 1 на 2, затем результат этого умножения на 3 и так далее.
Модуль functools позволяет хорошо раскрыть функциональные возможности Python. Например, в functools есть интересная функция reduce, которая позволяет «сжимать» данные, применяя последовательно функцию и запоминая результат.
Таким образом, в примере выше reduce умножает 1 на 2, затем результат этого умножения на 3 и так далее.