Проверка на анаграммность
Проверить, являются ли строки анаграммами (например, в результате случайной перестановки букв) поможет класс
Посмотреть код
#string #collections
Проверить, являются ли строки анаграммами (например, в результате случайной перестановки букв) поможет класс
Counter модуля collections.Посмотреть код
#string #collections
Запрос пароля во время выполнения программы
Этот простой пакет позволяет запрашивать у пользователя его пароль, а также получать его имя (под которым он вошёл в систему).
Правда, при работе с паролями стоит знать о том, что не все системы поддерживают скрытие паролей. Python постарается вас об этом уведомить. Если это произойдёт – вы увидите соответствующее предупреждение в командной строке.
Посмотреть код
#tips
Этот простой пакет позволяет запрашивать у пользователя его пароль, а также получать его имя (под которым он вошёл в систему).
Правда, при работе с паролями стоит знать о том, что не все системы поддерживают скрытие паролей. Python постарается вас об этом уведомить. Если это произойдёт – вы увидите соответствующее предупреждение в командной строке.
Посмотреть код
#tips
Загрузка модели в Keras
Библиотека Keras позволяет сохранять модель в такие форматы как YAML и json, однако гораздо удобнее (и нативнее, если можно так выразиться) сохранять модель в формат H5 (hdf5).
Данный формат позволяет сохранить:
📌 Веса модели
📌 Ее архитектуру
📌 loss и metrics
✏️ Для работы с этим форматом вам необходимо установить модуль
После загрузки вы можете обращаться к
Посмотреть код
#Keras #NN
Библиотека Keras позволяет сохранять модель в такие форматы как YAML и json, однако гораздо удобнее (и нативнее, если можно так выразиться) сохранять модель в формат H5 (hdf5).
Данный формат позволяет сохранить:
📌 Веса модели
📌 Ее архитектуру
📌 loss и metrics
✏️ Для работы с этим форматом вам необходимо установить модуль
h5pyПосле загрузки вы можете обращаться к
model с помощью привычных команд.Посмотреть код
#Keras #NN
Интеграл из предыдущего поста можно легко посчитать, если заметить что вклад первого слагаемого равен нулю (нечетная функция интегрируется в симметричных пределах). Остальное берется заменой x = 2*sin(φ).
Правильный ответ: π
Можно посчитать это численно, с помощью пакета sympy. Это библиотека для символьной математики. Для этого импортируем
Далее синтаксис очень сильно напоминает Wolfram Mathematica. Просто передаем в
Посмотреть код
#sympy
Правильный ответ: π
Можно посчитать это численно, с помощью пакета sympy. Это библиотека для символьной математики. Для этого импортируем
Symbol, integrate и sqrt. Далее синтаксис очень сильно напоминает Wolfram Mathematica. Просто передаем в
integrate функцию и кортеж с пределами.Посмотреть код
#sympy
Нахождение близких соответствий в строках
Предположим, вы попали в ситуацию, когда вам понадобилось, задействуя концепцию наподобие расстояния Левенштейна, найти в списке слова, похожие на некую входную строку. Решить эту задачу можно с помощью built-in модуля
Данный метод ищет "наилучшие" возможные совпадения. Первый аргумент задаёт искомую строку, второй аргумент задаёт список, в котором выполняется поиск.
Также в метод можно передать необязательный аргумент
Посмотреть код
Предположим, вы попали в ситуацию, когда вам понадобилось, задействуя концепцию наподобие расстояния Левенштейна, найти в списке слова, похожие на некую входную строку. Решить эту задачу можно с помощью built-in модуля
difflib.Данный метод ищет "наилучшие" возможные совпадения. Первый аргумент задаёт искомую строку, второй аргумент задаёт список, в котором выполняется поиск.
Также в метод можно передать необязательный аргумент
n, который задаёт максимальное число возвращаемых совпадений.Посмотреть код
Нравится вам новый стиль постов?
Anonymous Poll
74%
Да, полностью
22%
Да, но разбавляй их слегка лайв постами
4%
Нет, не люблю картинки
Кэширование результатов вызова функций с помощью декоратора
Доводилось ли вам писать функции, которые выполняли какие-нибудь длительные операции чтения-записи, или достаточно медленные рекурсивные вычисления?
Думали ли вы при этом о том, что таким функциям не повредило бы кэширование результатов? Кэшировать результаты вызова функции можно с помощью декоратора
В этом примере мы выполняем GET-запросы, результаты которых кэшируются (кэшировано может быть до 32 результатов). Тут можно увидеть и то, что мы получаем сведения о кэше функции, воспользовавшись методом
Посмотреть код
#functools
Доводилось ли вам писать функции, которые выполняли какие-нибудь длительные операции чтения-записи, или достаточно медленные рекурсивные вычисления?
Думали ли вы при этом о том, что таким функциям не повредило бы кэширование результатов? Кэшировать результаты вызова функции можно с помощью декоратора
lru_cache из модуля functools.В этом примере мы выполняем GET-запросы, результаты которых кэшируются (кэшировано может быть до 32 результатов). Тут можно увидеть и то, что мы получаем сведения о кэше функции, воспользовавшись методом
cache_info.Посмотреть код
#functools
Нахождение часто встречающихся элементов в списке
📌 Нахождение в списке таких элементов, которые встречаются в нём чаще других, это весьма распространённая задача. Решить её можно, например, воспользовавшись циклом
📌 Но такой подход – это конечно пустая трата времени. Решать подобные задачи можно с помощью класса
✏️
Посмотреть код
#collections
📌 Нахождение в списке таких элементов, которые встречаются в нём чаще других, это весьма распространённая задача. Решить её можно, например, воспользовавшись циклом
for и словарём, в котором будут собраны сведения о количестве одинаковых элементов.📌 Но такой подход – это конечно пустая трата времени. Решать подобные задачи можно с помощью класса
Counter из модуля collections.✏️
Counter по сути основан на словаре, хранящем соответствия элементов и количества их вхождений в список. Поэтому соответствующий объект можно использовать как обычный dict.Посмотреть код
#collections
Очистка входных строковых данных
Задача очистки данных, вводимых пользователем, актуальна практически для любой программы.
📌 Иногда данные можно очистить с помощью регулярного выражения.
📌 Но в случаях, когда задача усложняется, можно применить более удачный способ её решения. Здесь пробельные символы
✏️ Это – простой пример, но мы можем его расширить, создавая таблицы переназначения символов с использованием пакета
Такой подход позволяет убирать из строк всё то, что там не нужно.
Посмотреть код
#tips
Задача очистки данных, вводимых пользователем, актуальна практически для любой программы.
📌 Иногда данные можно очистить с помощью регулярного выражения.
📌 Но в случаях, когда задача усложняется, можно применить более удачный способ её решения. Здесь пробельные символы
"\n" и "\t" заменяются на обычные пробелы, а символ "\r" удаляется из строки полностью. ✏️ Это – простой пример, но мы можем его расширить, создавая таблицы переназначения символов с использованием пакета
unicodedata и его функции combining().Такой подход позволяет убирать из строк всё то, что там не нужно.
Посмотреть код
#tips
comp3321_red.pdf
18.5 MB
курс от АНБ по Python
В прикрепленном файле вы найдете немного отредактированную четырехсотстраничную распечатку учебного курса COMP 3321 по Python, который преподается в АНБ.
Данный курс содержит краткое введение в Python от его создателя Гвидо ван Россума и объясняет, для чего этот язык подходит лучше всего, например, для автоматизации задач, создания веб-приложений или проведения углубленных математических исследований.
В прикрепленном файле вы найдете немного отредактированную четырехсотстраничную распечатку учебного курса COMP 3321 по Python, который преподается в АНБ.
Данный курс содержит краткое введение в Python от его создателя Гвидо ван Россума и объясняет, для чего этот язык подходит лучше всего, например, для автоматизации задач, создания веб-приложений или проведения углубленных математических исследований.
Объявление нескольких конструкторов в классе
Перегрузка функций – это одна из возможностей, весьма широко используемых в различных языках программирования, но не в Python.
📌 Хотя в Python нельзя перегрузить обычную функцию, можно пользоваться чем-то вроде перегрузки конструкторов с использованием методов класса.
📌 Конечно, вместо использования методов класса, можно поместить всю логику альтернативных конструкторов в
✏️ В результате может получиться рабочий код, но этот код будет тяжело читать и поддерживать. Тут можно порекомендовать поместить минимум логики в
✏️ При таком подходе в нашем распоряжении окажется чистый код, с которым удобно будет работать и автору этого кода, и тому, кто этим кодом будет пользоваться.
Посмотреть код
Перегрузка функций – это одна из возможностей, весьма широко используемых в различных языках программирования, но не в Python.
📌 Хотя в Python нельзя перегрузить обычную функцию, можно пользоваться чем-то вроде перегрузки конструкторов с использованием методов класса.
📌 Конечно, вместо использования методов класса, можно поместить всю логику альтернативных конструкторов в
__init__ и решить задачу с использованием *args, **kwargs и множества выражений if.✏️ В результате может получиться рабочий код, но этот код будет тяжело читать и поддерживать. Тут можно порекомендовать поместить минимум логики в
__init__ и выполнить все операции в отдельных методах/конструкторах.✏️ При таком подходе в нашем распоряжении окажется чистый код, с которым удобно будет работать и автору этого кода, и тому, кто этим кодом будет пользоваться.
Посмотреть код
Простейший парсер прокси
📌 Для реализации нам потребуется библиотека
📌 С помощью переменной
✏️ В функции grab, кроме того, можно задавать
Посмотреть код
📌 Для реализации нам потребуется библиотека
proxybroker, и одна асинхронная функция для записи в файл.📌 С помощью переменной
limit можно задавать количество адресов.✏️ В функции grab, кроме того, можно задавать
types=['HTTP', 'HTTPS']Посмотреть код
Модуль dis и constant folding в Python 3.7
Кратко разбираем особенности constant folding в Python 3.7
Читать статью
Кратко разбираем особенности constant folding в Python 3.7
Читать статью
Teletype
Модуль dis и constant folding в Python 3.7
Разбираем constant folding в Python
Параметры в iter
📌 Обычно built-in функция
📌 Однако, можно передать два параметра. В таком случае, первый параметр должен быть callable-объектом, а второй — результатом вызова первого объекта, на котором нужно остановить итерирование.
Как пример, считывание данных из файла по кускам длины 64, до первого вхождения пустой строчки.
#iter
📌 Обычно built-in функция
iter() возвращает итератор от переданной последовательности.📌 Однако, можно передать два параметра. В таком случае, первый параметр должен быть callable-объектом, а второй — результатом вызова первого объекта, на котором нужно остановить итерирование.
Как пример, считывание данных из файла по кускам длины 64, до первого вхождения пустой строчки.
#iter
Решение #1
Сейчас я объясню как это работает. Когда мы используем оператор
📌 Если наш объект находится слева от оператора, то будет вызываться
📌 Объект
📌 Если вы посмотрите на него второй раз, вы увидите, что он также помогает нам пройти вторую проверку
Сейчас я объясню как это работает. Когда мы используем оператор
+, Python вызывает double underscore метод в зависимости от того, с какой стороны оператора находится наш объект.📌 Если наш объект находится слева от оператора, то будет вызываться
__add__, если он находится справа, будет вызываться __radd__.📌 Объект
Test вернет 0, если вызывается Test () + 1, и 1, если вызывается 1 + Test (). Хитрость в том, что мы перегружаем только один метод, а другой оставляем прежним. Это поможет нам пройти первое условие.📌 Если вы посмотрите на него второй раз, вы увидите, что он также помогает нам пройти вторую проверку
if, потому что мы просто возвращаем ввод, если он не равен 1, поэтому Test () + 2 всегда будет похож на 2 + Test ().