Параметры функции *args, **kwargs
Думаю, многие хоть раз видели такую запись, сейчас мы узнаем, что это за магические символы. Сообщу сразу, что
В примере функция принимает обязательный аргумент
В целом, конструкция с
#functions #arguments
Думаю, многие хоть раз видели такую запись, сейчас мы узнаем, что это за магические символы. Сообщу сразу, что
args
и kwargs
– общепринятые имена переменных, а разбирать мы будем звездочки перед ними.В примере функция принимает обязательный аргумент
value
, а остальных аргументов она как бы не ожидает. В таком случае *args
упаковывает все не именованные аргументы в кортеж, а **kwargs
– все именованные в словарь.В целом, конструкция с
*args, **kwargs
получается достаточно полезной, если мы не знаем, кто и в каких целях будет использовать нашу функцию. То есть, мы можем запихнуть в аргументы после такого практически всё.#functions #arguments
Pyperclip
Модуль
Таким образом, можно прямо через код копировать вывод программы в буфер обмена вместо того, чтобы делать это вручную.
Установить этот модуль можно привычным способом через пакетный менеджер
#pyperclip #модули
Модуль
pyperclip
имеет функции copy()
и paste()
, которые позволяют отправлять текст в буфер обмена вашего компьютера и получать его оттуда.Таким образом, можно прямо через код копировать вывод программы в буфер обмена вместо того, чтобы делать это вручную.
Установить этот модуль можно привычным способом через пакетный менеджер
pip
.#pyperclip #модули
Упаковка параметров с помощью urlencode
Довольно часто приходится работать с разнообразными API и совершать get-запросы с передачей множества параметров. Чаще всего составление запроса в коде выглядит примерно так:
Смотрится не слишком презентабельно, однако есть слегка более длинный, но значительно улучающий читаемость кода вариант – функция
#трюки #urllib
Довольно часто приходится работать с разнообразными API и совершать get-запросы с передачей множества параметров. Чаще всего составление запроса в коде выглядит примерно так:
url = 'https://example.com?item={}&size={}&color={}&amount={}'.format('t-shirt', 'M', 'white', 5)
Смотрится не слишком презентабельно, однако есть слегка более длинный, но значительно улучающий читаемость кода вариант – функция
urlencode
из модуля urllib
.#трюки #urllib
How Do I
Сегодня наткнулся на модуль, который за вас может гуглить вопросы по программированию. Просто в консоли пишите
Модуль просто парсит верхние ответы со StackOverflow, и всё. Устанавливается это чудо через
#модули #howdoi
Сегодня наткнулся на модуль, который за вас может гуглить вопросы по программированию. Просто в консоли пишите
"howdoi ..."
, где вместо многоточия – ваш вопрос.Модуль просто парсит верхние ответы со StackOverflow, и всё. Устанавливается это чудо через
pip
, а для его использования, очевидно, нужен интернет.#модули #howdoi
Wikipedia в Python
В случае, если вам не хватает прошлого
Устанавливается этот модуль через пакетный менеджер
#модули #wikipedia
В случае, если вам не хватает прошлого
howdoi
, можете взглянуть на модуль, который обращается к API Википедии. Устанавливается этот модуль через пакетный менеджер
pip
. А использовать его можно без всяких трудностей – всё самое важное показано на картинке.#модули #wikipedia
Немного про цифры и юникод
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 – не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры, полный список вот здесь.
Это влияет на такие функции, как
#числа #юникод
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 – не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры, полный список вот здесь.
Это влияет на такие функции, как
int
, unicode.isdecimal
и даже re.match
. Предупрежден – значит вооружен.#числа #юникод
Сортировка словаря по значениям
Сортировка данных словаря по значениям ключей, а не по самим ключам, нередко ставит в тупик.
Задача решается довольно просто при помощи аргумента
#словари #сортировка
Сортировка данных словаря по значениям ключей, а не по самим ключам, нередко ставит в тупик.
Задача решается довольно просто при помощи аргумента
key
функции sorted
для указания функции, которая будет вызываться на каждом элементе до сравнения.#словари #сортировка
Функция reduce
Модуль
Таким образом, в примере выше
#функции #reduce
Модуль
functools
позволяет хорошо раскрыть функциональные возможности Python. Например, в functools
есть интересная функция reduce
, которая позволяет «сжимать» данные, применяя последовательно функцию и запоминая результат.Таким образом, в примере выше
reduce
умножает 1 на 2, затем результат этого умножения на 3 и так далее.#функции #reduce
Лимит рекурсии
В Python не поддерживается хвостовая рекурсия, из-за чего зачастую возникает
Однако делать это слегка опасно, так как каждый новый вызов занимает достаточно много памяти. И вообще лучше стараться использовать не рекурсию, а обычные циклы.
#рекурсия #sys
В Python не поддерживается хвостовая рекурсия, из-за чего зачастую возникает
RecursionError
во время создания рекурсивных алгоритмов. Но с помощью модуля sys
можно посмотреть и даже изменить максимальную глубину рекурсии. Однако делать это слегка опасно, так как каждый новый вызов занимает достаточно много памяти. И вообще лучше стараться использовать не рекурсию, а обычные циклы.
#рекурсия #sys
Инкремент с помощью __pos__
В Python нет операции инкремента
При применении унарного плюса у объекта вызывается магический метод
Код на картинке может показаться сначала немного сложным, но лучше проследить логику и понять работу метода
#магические_методы #__pos__
В Python нет операции инкремента
++
как в си-подобных языках, поэтому используется x += 1
. Однако запись ++x
является валидным кодом (но не x++
), так как это просто два унарных оператора сложения.При применении унарного плюса у объекта вызывается магический метод
__pos__
, то есть запись ++x
можно понять как x.__pos__().__pos__()
. Зная это, можно реализовать класс, который будет представлять число и поддерживать поведение инкремента.Код на картинке может показаться сначала немного сложным, но лучше проследить логику и понять работу метода
__pos__
. Если реализовать все остальные необходимо магические методы, то может получится полноценный класс числа, но в продакшне такие приколы лучше не писать.#магические_методы #__pos__
Дробные числа
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Поэтому для идеальных вычислений лучше использовать
#числа #fraction
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Decimal
, который предоставит намного большую точность, но и его может не хватить в некоторых случаях. Поэтому для идеальных вычислений лучше использовать
Fraction
, который представляет и хранит число в виде рациональной дроби.#числа #fraction
Python 3.9.0 🎉
На днях выпустили новую версию Python, в которой добавили немного нового синтаксиса и несколько новых возможностей, а также оптимизировали некоторые моменты языка.
Из интересного стоит выделить:
– Оператор объединения словарей (PEP 584)
– Встроенные аннотации дженерик типов (PEP 585)
– Смягчение грамматических ограничений декораторов (PEP 614)
– Строковые методы для удаления префикса и суффикса (PEP 616)
А ещё Python 3.9 не совместим с Windows 7, так как это версия ОС официально не поддерживается.
#updates #release
На днях выпустили новую версию Python, в которой добавили немного нового синтаксиса и несколько новых возможностей, а также оптимизировали некоторые моменты языка.
Из интересного стоит выделить:
– Оператор объединения словарей (PEP 584)
– Встроенные аннотации дженерик типов (PEP 585)
– Смягчение грамматических ограничений декораторов (PEP 614)
– Строковые методы для удаления префикса и суффикса (PEP 616)
А ещё Python 3.9 не совместим с Windows 7, так как это версия ОС официально не поддерживается.
#updates #release
SberCloud запустили довольно забавную небольшую ролевую игру, позволяющую почувствовать себя в шкуре начинающего стартапера и потренироваться в запуске и поддержке первого проекта.
В стол или в релиз? Проверь, какой из тебя стартапер: https://sc.link/x1n
В стол или в релиз? Проверь, какой из тебя стартапер: https://sc.link/x1n
Новый оператор объединения словарей
В Python есть много разных способов объединить несколько словарей. Мне, например, больше всего нравилась распаковка словарей в один новый.
Но в последнем обновлении добавили специальный оператор
#словари
В Python есть много разных способов объединить несколько словарей. Мне, например, больше всего нравилась распаковка словарей в один новый.
Но в последнем обновлении добавили специальный оператор
|
, с помощью которого можно это делать ещё проще. #словари
Смягчение грамматических ограничений декораторов
Ещё один приятный момент из недавнего обновления связан с декораторами. В целом, нового здесь немного, но появилась возможность слегка упросить код.
Изменение позволило заметно улучшить читаемость кода на PyQt5 и упростить сопровождение данного модуля.
#декораторы
Ещё один приятный момент из недавнего обновления связан с декораторами. В целом, нового здесь немного, но появилась возможность слегка упросить код.
Изменение позволило заметно улучшить читаемость кода на PyQt5 и упростить сопровождение данного модуля.
#декораторы