Оператор неравенства и Бэрри
1 апреля 2009 года выпустили PEP 401, в котором говорилось, что Гвидо ван Россум покидает команду Python.
На его замену должен был прийти Barry Warsaw, который имел официальный статус Friendly Language Uncle For Life (FLUFL) — в переводе "дружелюбный дядя языка на всю жизнь".
И этот Дядя Бэрри предложил заменить "противный" знак неравенства
Для этого можно импортировать
Это всё было первоапрельской шуткой, но оператор
1 апреля 2009 года выпустили PEP 401, в котором говорилось, что Гвидо ван Россум покидает команду Python.
На его замену должен был прийти Barry Warsaw, который имел официальный статус Friendly Language Uncle For Life (FLUFL) — в переводе "дружелюбный дядя языка на всю жизнь".
И этот Дядя Бэрри предложил заменить "противный" знак неравенства
!= на <>. Изменения обещали выпустить в последующих версиях, но его можно было протестировать и раньше времени.Для этого можно импортировать
barry_as_FLUFL из пакета __future__. Результат можете видно на картинке.Это всё было первоапрельской шуткой, но оператор
<> всё ещё доступен и является некой пасхалкой.Удаление префиксов и суффиксов
По какой-то причине многие разработчики посчитали эту фичу в обновлении 3.9 не очень интересной и попросту забыли. И зря.
Некоторые на полном серьезе для таких целей до сих пор пытаются использовать забагованные .strip и .lsrtip. Большинство просто не до конца понимают, как работают эти два метода.
В Python 3.9 были добавлены методы для строк .removeprefix и .removesuffix, предназначенные специально для удаления префиксов и суффиксов в строках.
По какой-то причине многие разработчики посчитали эту фичу в обновлении 3.9 не очень интересной и попросту забыли. И зря.
Некоторые на полном серьезе для таких целей до сих пор пытаются использовать забагованные .strip и .lsrtip. Большинство просто не до конца понимают, как работают эти два метода.
В Python 3.9 были добавлены методы для строк .removeprefix и .removesuffix, предназначенные специально для удаления префиксов и суффиксов в строках.
Проверка четности или нечетности числа без использования оператора %
Хотя этот трюк не намного лучше, чем использование оператора %, но иногда он эффективен (с большими числами).
Рассмотрим пару примеров:
k = 3
Двоичный: «11 & 1» будет 001, поэтому число нечетное
k = 4
Двоичный: «100 & 1» будет 000, поэтому число четное.
Хотя этот трюк не намного лучше, чем использование оператора %, но иногда он эффективен (с большими числами).
Рассмотрим пару примеров:
k = 3
Двоичный: «11 & 1» будет 001, поэтому число нечетное
k = 4
Двоичный: «100 & 1» будет 000, поэтому число четное.
🐍 Создайте автотест Web UI на Python и Selenium за 7 шагов: инструкция для новичков
Если вам нужно тестировать веб-интерфейсы и логику отображения графических блоков на странице или просто автоматизировать работу в браузере, эта статья для вас. Читайте инструкцию по созданию автотеста на Python и Selenium за 7 простых шагов.
https://proglib.io/p/sozdayte-avtotest-web-ui-na-python-i-selenium-za-7-shagov-instrukciya-dlya-novichkov-2021-11-13
Если вам нужно тестировать веб-интерфейсы и логику отображения графических блоков на странице или просто автоматизировать работу в браузере, эта статья для вас. Читайте инструкцию по созданию автотеста на Python и Selenium за 7 простых шагов.
https://proglib.io/p/sozdayte-avtotest-web-ui-na-python-i-selenium-za-7-shagov-instrukciya-dlya-novichkov-2021-11-13
Библиотека программиста
🐍 Создайте автотест Web UI на Python и Selenium за 7 шагов: инструкция для новичков
Если вам нужно тестировать веб-интерфейсы и логику отображения графических блоков на странице или просто автоматизировать работу в браузере, эта статья для вас. Читайте инструкцию по созданию автотеста на Python и Selenium за 7 простых шагов.
Нахождение файлов по шаблону
Основной фишкой модуля glob является удобная и лаконичная работа с поиском файлов по паттернам. Более того, можно даже пройтись по директориям рекурсивно.
В одноименный метод glob передаётся шаблон для поиска файлов, а возвращается список с результатами. Все методы следуют механизму и правилам сопоставления паттернов в стиле Unix.
Основной фишкой модуля glob является удобная и лаконичная работа с поиском файлов по паттернам. Более того, можно даже пройтись по директориям рекурсивно.
В одноименный метод glob передаётся шаблон для поиска файлов, а возвращается список с результатами. Все методы следуют механизму и правилам сопоставления паттернов в стиле Unix.
🐍 15 самых часто задаваемых вопросов на собеседовании про Python
Разбор 15 самых часто задаваемых вопросов для начинающих, а также для продвинутых Python-разработчиков.
https://proglib.io/p/15-samyh-chasto-zadavaemyh-voprosov-na-sobesedovanii-pro-python-2022-05-24
Разбор 15 самых часто задаваемых вопросов для начинающих, а также для продвинутых Python-разработчиков.
https://proglib.io/p/15-samyh-chasto-zadavaemyh-voprosov-na-sobesedovanii-pro-python-2022-05-24
Библиотека программиста
🐍 15 самых часто задаваемых вопросов на собеседовании про Python
Разбор 15 самых часто задаваемых вопросов для начинающих, а также для продвинутых Python-разработчиков.
Геттеры и сеттеры
В объектно-ориентированных языках распространено использование геттеров и сеттеров для безопасной работы с приватными полями. Например, в C# для этого есть удобная конструкция
В Python геттер реализуется через декоратор
Оба метода должны иметь одинаковое название, по которому можно будет обращаться так же, как к обычному атрибуту.
В объектно-ориентированных языках распространено использование геттеров и сеттеров для безопасной работы с приватными полями. Например, в C# для этого есть удобная конструкция
{ get; set; }.В Python геттер реализуется через декоратор
@property, а сеттер в виде @свойство.setter. На картинке метод геттера называется age, поэтому декоратор сеттера – @age.setter.Оба метода должны иметь одинаковое название, по которому можно будет обращаться так же, как к обычному атрибуту.
Частичное применение
Поговорим об интересном концепте из области функционального программирования. Использовать будем функцию
Предоставление функции меньшего количества аргументов, чем она ожидает, называется частичным применением функций.
Другими словами, это такая функция, которая принимает другую функцию с несколькими параметрами и возвращает функцию, но уже с меньшим количеством параметров.
Поговорим об интересном концепте из области функционального программирования. Использовать будем функцию
partial из стандартной библиотеки functools.Предоставление функции меньшего количества аргументов, чем она ожидает, называется частичным применением функций.
Другими словами, это такая функция, которая принимает другую функцию с несколькими параметрами и возвращает функцию, но уже с меньшим количеством параметров.
Модуль pytz
Модуль pytz имеет функции преобразования даты и времени. Таким образом позволяет обслуживать международную клиентскую базу.
В примере выше мы узнаем дату и время конкретного часового пояса.
С документацией пакета вы можете ознакомиться здесь.
Модуль pytz имеет функции преобразования даты и времени. Таким образом позволяет обслуживать международную клиентскую базу.
В примере выше мы узнаем дату и время конкретного часового пояса.
С документацией пакета вы можете ознакомиться здесь.
Что выведет код?
Anonymous Quiz
30%
Error
6%
(1, [1, 42, 3], 3)
52%
(1, [42, 2, 3], 3)
7%
(1, 42, 3)
5%
(1, [1, 2, 3], 3)
Python и Windows
Если вы работаете с Windows, PyWin32 — библиотека, которую вам пригодится. Вопреки названию, подходит и для 64-битной версии. Она открывает доступ к множеству вызовов к API операционной системы. Работа с процессами, окнами и другие взаимодействия. Все нативные приложения на Python никак не могут обойтись без обращений к Win32 API.
PyWin32 содержит большинство команд, которые особенно пригодятся, если вы разрабатываете приложение с визуальным интерфейсом или с постоянной работой с файловой системой.
Документация:
https://pypi.org/project/pywin32/
Если вы работаете с Windows, PyWin32 — библиотека, которую вам пригодится. Вопреки названию, подходит и для 64-битной версии. Она открывает доступ к множеству вызовов к API операционной системы. Работа с процессами, окнами и другие взаимодействия. Все нативные приложения на Python никак не могут обойтись без обращений к Win32 API.
PyWin32 содержит большинство команд, которые особенно пригодятся, если вы разрабатываете приложение с визуальным интерфейсом или с постоянной работой с файловой системой.
Документация:
https://pypi.org/project/pywin32/
PyPI
pywin32
Python for Windows Extensions
Аннотации типов: Union и Optional
При необходимости допустить использование не любых типов, а только некоторых, можно использовать аннотацию
Для объявления опциональных переменных используется
Кстати, аннотация
При необходимости допустить использование не любых типов, а только некоторых, можно использовать аннотацию
Union[T, ...] с указанием списка типов в квадратных скобках.Для объявления опциональных переменных используется
Optional[T]. Такая аннотация нужна для переменных, которые либо имеют значение определенного типа, либо равны None.Кстати, аннотация
Optional[T] эквивалентна Union[T, None].Заменяем часть строки
Со строками в Python работать очень удобно, так как встроенных методов для них довольно много. Одним из методов является
Первым аргументом передается подстрока, которая будет изменяться в исходной строке. Вторым аргументом — то, на что будет заменяться.
Также есть третий опциональный аргумент, который отвечает за то, сколько раз вы хотите заменить старую подстроку на новую. По умолчанию все вхождения заменяются.
Со строками в Python работать очень удобно, так как встроенных методов для них довольно много. Одним из методов является
str.replace(), который позволяет заменять части строк.Первым аргументом передается подстрока, которая будет изменяться в исходной строке. Вторым аргументом — то, на что будет заменяться.
Также есть третий опциональный аргумент, который отвечает за то, сколько раз вы хотите заменить старую подстроку на новую. По умолчанию все вхождения заменяются.
Классы данных (Data classes)
Начиная с версии 3.7, Python предлагает классы данных. Есть несколько преимуществ перед обычными классами или другими альтернативами, такими как возвращение нескольких значений или словарей:
🐍 класс данных требует минимального количества кода;
🐍 вы можете сравнить классы данных, потому что существует
🐍 вы можете легко вывести класс данных для отладки, потому что существует
🐍 классы данных требуют тайп хинты, что уменьшает шанс ошибок.
На картинке пример класса данных в работе.
Начиная с версии 3.7, Python предлагает классы данных. Есть несколько преимуществ перед обычными классами или другими альтернативами, такими как возвращение нескольких значений или словарей:
🐍 класс данных требует минимального количества кода;
🐍 вы можете сравнить классы данных, потому что существует
__eq__;🐍 вы можете легко вывести класс данных для отладки, потому что существует
__repr__;🐍 классы данных требуют тайп хинты, что уменьшает шанс ошибок.
На картинке пример класса данных в работе.
Используйте dict.get() вместо dict[]
Есть несколько способов получения значений из словарей.
Многие получают значения по ключам через квадратные скобки, но если такого ключа нет, то будет вызвано исключение.
Поэтому мы считаем, что лучше использовать метод
Таким образом, если значение по ключу не найдено, то вернется дефолтное значение.
В итоге мы убираем возможные ошибки в случае, если нужных ключей в словаре нет.
Есть несколько способов получения значений из словарей.
Многие получают значения по ключам через квадратные скобки, но если такого ключа нет, то будет вызвано исключение.
Поэтому мы считаем, что лучше использовать метод
get у словарей. Его основной плюс заключается в том, что он принимает опциональный аргумент, отвечающий за значение по умолчанию. Таким образом, если значение по ключу не найдено, то вернется дефолтное значение.
В итоге мы убираем возможные ошибки в случае, если нужных ключей в словаре нет.
Узнаём курс доллара при помощи Python в 2 строчки
Пакет
Пакет
forex-python позволяет получать данные о курсе валют и конвертировать одну валюту в другую. Программа на картинке позволяет нам узнать курс доллара относительно многих других валют мира. Вместо "USD" можно вставить любую другую валюту и получить актуальное соотношение.