POST запросы и отправка данных
Обратите внимание на параметр
#theory // Just Python
Обратите внимание на параметр
json= вместо data=. Он автоматически сериализует Python-словарь в JSON и устанавливает правильный заголовок Content-Type.#theory // Just Python
Простой способ перевернуть строку
Этот трюк со срезами
#theory // Just Python
Этот трюк со срезами
[::-1] я использую почти каждый день. Он работает значительно быстрее, чем итерационные методы типа ''.join(reversed(s)), что доказано бенчмарками. Кстати, тот же метод применим и к спискам.#theory // Just Python
Список с условием (List Comprehension)
List comprehension — один из самых мощных инструментов Python, позволяющий создавать списки одной строкой кода.
Этот подход не только компактнее, но и быстрее традиционных циклов. Важно не злоупотреблять сложными условиями — код должен оставаться читаемым. Однажды я переписал цикл из 15 строк в одну строку list comprehension, и код стал работать на 30% быстрее.
#theory // Just Python
List comprehension — один из самых мощных инструментов Python, позволяющий создавать списки одной строкой кода.
Этот подход не только компактнее, но и быстрее традиционных циклов. Важно не злоупотреблять сложными условиями — код должен оставаться читаемым. Однажды я переписал цикл из 15 строк в одну строку list comprehension, и код стал работать на 30% быстрее.
#theory // Just Python
Сглаживание вложенного списка
Вложенные списки — частое явление, но иногда нужно "сгладить" их до одного уровня.
Для многоуровневых списков удобнее использовать рекурсивный подход.
#theory // Just Python
Вложенные списки — частое явление, но иногда нужно "сгладить" их до одного уровня.
Для многоуровневых списков удобнее использовать рекурсивный подход.
#theory // Just Python
Многоточие в Python
Многоточие Python – это последовательность из трех точек, часто используемая в естественных языках. Но чего вы, возможно, не знаете – это еще и валидный объект в Python
Применяется он преимущественно в операциях нарезки матриц в NumPy. Однако можно использовать его вместо обычного pass в качестве плэйсхолдера в функции, которую еще не реализовали.
#theory // Just Python
Многоточие Python – это последовательность из трех точек, часто используемая в естественных языках. Но чего вы, возможно, не знаете – это еще и валидный объект в Python
>>> ...
# Вывод покажет: Ellipsis
Применяется он преимущественно в операциях нарезки матриц в NumPy. Однако можно использовать его вместо обычного pass в качестве плэйсхолдера в функции, которую еще не реализовали.
#theory // Just Python
Data classes
Начиная с версии 3.7, Python поставляется с классами данных. У них есть несколько преимуществ по сравнению с обычными классами или другими альтернативами:
- возврат нескольких значений или словарей;
- класс данных требует минимального количества кода;
- возможность сравнения классов данных;
- возможность распечатать класс данных для отладки при помощи repr;
- снижение вероятности ошибок в связи с требованием класса данных type hints.
#theory // Just Python
Начиная с версии 3.7, Python поставляется с классами данных. У них есть несколько преимуществ по сравнению с обычными классами или другими альтернативами:
- возврат нескольких значений или словарей;
- класс данных требует минимального количества кода;
- возможность сравнения классов данных;
- возможность распечатать класс данных для отладки при помощи repr;
- снижение вероятности ошибок в связи с требованием класса данных type hints.
#theory // Just Python
List Comprehensions
List comprehension может заменить неэстетичные циклы, используемые для заполнения списка. Синтаксис выглядит следующим образом:
Поскольку здесь можно использовать выражения, вам доступна работа с математикой, вызов внешней функции и, наконец, вы сможете использовать «if» для фильтрации списка.
#theory // Just Python
List comprehension может заменить неэстетичные циклы, используемые для заполнения списка. Синтаксис выглядит следующим образом:
[ expression for item in list if conditional ]
Поскольку здесь можно использовать выражения, вам доступна работа с математикой, вызов внешней функции и, наконец, вы сможете использовать «if» для фильтрации списка.
#theory // Just Python
Замена переменных на месте
Этот аккуратный трюк поможет сэкономить несколько строк кода.
#theory // Just Python
Этот аккуратный трюк поможет сэкономить несколько строк кода.
#theory // Just Python
Обязательные аргументы
Для принудительного использования аргументов ставьте символ звездочки перед ними, заставляя все аргументы стать ключевыми
#theory // Just Python
Для принудительного использования аргументов ставьте символ звездочки перед ними, заставляя все аргументы стать ключевыми
#theory // Just Python
Использование подчеркивания в REPL
Вы можете получить результат последнего выражения в Python REPL с помощью оператора подчеркивания, например, в Python REPL это выглядит следующим образом
#theory // Just Python
Вы можете получить результат последнего выражения в Python REPL с помощью оператора подчеркивания, например, в Python REPL это выглядит следующим образом
#theory // Just Python
Проверка необходимой версии Python
Чтобы ваши пользователи не могли запустить скрипт в несовместимой версии, в коде стоит проверить наличие актуальной версии Python.
#theory // Just Python
Чтобы ваши пользователи не могли запустить скрипт в несовместимой версии, в коде стоит проверить наличие актуальной версии Python.
#theory // Just Python
Декорируем функции
Декоратор – это обертка вокруг функции, которая определенным образом изменяет ее поведение. Существуют варианты использования декораторов, и вы, возможно, уже применяли их раньше при работе с такими фреймворками, как Flask.
#theory // Just Python
Декоратор – это обертка вокруг функции, которая определенным образом изменяет ее поведение. Существуют варианты использования декораторов, и вы, возможно, уже применяли их раньше при работе с такими фреймворками, как Flask.
#theory // Just Python
Nested list comprehensions
Помните основной синтаксис list comprehensions?
Если expression может быть любым валидным выражением Python, оно также может быть и другим list comprehension.
Или, если хотите «разгладить» предыдущую матрицу.
#theory // Just Python
Помните основной синтаксис list comprehensions?
[ expression for item in list if conditional ]
Если expression может быть любым валидным выражением Python, оно также может быть и другим list comprehension.
Или, если хотите «разгладить» предыдущую матрицу.
#theory // Just Python
Форматирование именованных строк
Такую штуку используют нечасто, но если данные уже находятся в словаре, для форматирования именованных строк пригодится.
Вы даже можете использовать функцию locals(), но в последних версиях Python придется обращаться к f-строкам.
#theory // Just Python
Такую штуку используют нечасто, но если данные уже находятся в словаре, для форматирования именованных строк пригодится.
Вы даже можете использовать функцию locals(), но в последних версиях Python придется обращаться к f-строкам.
#theory // Just Python
Нарезка списка
Синтаксис нарезания таков:
Start, stop и step необязательны. У них есть дефолтные значения, которые активируются, если не заполнить параметры:
0 для start;
конец списка для stop;
1 для step.
#theory // Just Python
Синтаксис нарезания таков:
a[start:stop:step]
Start, stop и step необязательны. У них есть дефолтные значения, которые активируются, если не заполнить параметры:
0 для start;
конец списка для stop;
1 для step.
#theory // Just Python
Использование памяти
С помощью sys.getsizeof() можно проверить использование памяти объектом
Огромный список всего 48 байт, потому что функция range возвращает класс, который ведет себя как список. В вопросе памяти range эффективнее, чем использование актуального списка чисел.
#theory // Just Python
С помощью sys.getsizeof() можно проверить использование памяти объектом
Огромный список всего 48 байт, потому что функция range возвращает класс, который ведет себя как список. В вопросе памяти range эффективнее, чем использование актуального списка чисел.
#theory // Just Python
Возврат нескольких значений
Функции в Python могут возвращать более одной переменной без применения словаря, списка или класса.
Здесь возвращается кортеж. С тем же эффектом можно было бы написать return (name, birthdate).
Это нормально для ограниченного количества возвращаемых значений. Но все, что превышает 3 значения, должно быть помещено в класс (data).
#theory // Just Python
Функции в Python могут возвращать более одной переменной без применения словаря, списка или класса.
Здесь возвращается кортеж. С тем же эффектом можно было бы написать return (name, birthdate).
Это нормально для ограниченного количества возвращаемых значений. Но все, что превышает 3 значения, должно быть помещено в класс (data).
#theory // Just Python
Объединение словарей
Начиная с Python 3.5, стало проще объединять словари.
Если встречаются дублирующиеся ключи – в первом словаре они будут перезаписаны.
#theory // Just Python
Начиная с Python 3.5, стало проще объединять словари.
Если встречаются дублирующиеся ключи – в первом словаре они будут перезаписаны.
#theory // Just Python
Использование * и ** для распаковки аргументов функций
Некоторые функции требуют длинного списка аргументов. Этого следует избегать (например, с помощью классов данных), хотя это не всегда зависит от вас. Существует другой вариант – создать словарь с именованными аргументами и передать его функции. Так ваш код станет более читабельным.
Распаковать словарь можно, используя префикс **
Аналогично можно использовать * для распаковки массива и передачи его содержимого в качестве аргументов функции
#theory // Just Python
Некоторые функции требуют длинного списка аргументов. Этого следует избегать (например, с помощью классов данных), хотя это не всегда зависит от вас. Существует другой вариант – создать словарь с именованными аргументами и передать его функции. Так ваш код станет более читабельным.
Распаковать словарь можно, используя префикс **
Аналогично можно использовать * для распаковки массива и передачи его содержимого в качестве аргументов функции
#theory // Just Python
Строка – заголовок
Если хотите быстро получить красивый заголовок, используйте .title()
#theory // Just Python
Если хотите быстро получить красивый заголовок, используйте .title()
#theory // Just Python