Python Tips And Tricks
2.15K subscribers
341 photos
1 file
44 links
Твой лучший помощник в изучении и работе с Python 🐍

Реклама - @gaifullin
Download Telegram
Используем lambda, sum() и map()

Лямбда-функция в Python — это просто функция Python. Но это некий особенный тип с ограниченными возможностями.

Лямбда-функции вместе с sum() и map() также могут решить конкретно эту задачу подсчета общего числа вхождений определенного элемента в строку. Этот метод использует sum() для суммирования всех вхождений, полученных с помощью map().
👍41🔥1
Используем collection.Counter ()

Это менее известный метод для получения количества вхождений элемента в любой контейнер в Python. Он также выполняет задачу, аналогичную описанным выше двум методам, просто является функцией другой библиотеки, т.е. collections.

Класс Counter() модуля collections - это подкласс словаря dict для подсчета хеш-объектов (неизменяемых, таких как строки, числа, кортежи и т.д.). Это коллекция, в которой элементы хранятся в виде словарных ключей, а их счетчики хранятся в виде значений словаря.

Счетчик может быть любым целочисленным значением, включая ноль или отрицательное число. Класс collections.Counter() похож на мультимножества в других языках программирования.
👍32🔥1
Разделение строки-словаря и преобразование ее в списки или словарь

Допустим, у нас есть строка, по сути являющаяся словарем и содержащая пары ключ-значение в виде key => value. Мы хотим получить эти пары в виде списков или настоящего словаря. Вот простой пример, как получить словарь и два списка
👍6🔥1
isinstance()

Функция isinstance() вернет True, если проверяемый объект object является экземпляром указанного класса (классов) или его подкласса (прямого, косвенного или виртуального).

Если объект object не является экземпляром данного типа, то функция всегда возвращает False.

Функцией isinstance() можно проверить класс, кортеж с классами, либо рекурсивный кортеж кортежей. Другие типы последовательностей аргументом classinfo не поддерживаются.
👍5
Форматирование строк в Python с помощью .format()

Этот способ форматирования был представлен в раннем Python 3. По сути, новый синтаксис удалил символы %. Вместо них он предоставил .format() в качестве строкового метода. Этот метод принимает позиционные аргументы для вставки в места, определенные фигурными скобками.

Аргументы могут быть и именованными, но порой это кажется излишне многословным.

С помощью метода str.format() вы можете сделать больше, чем просто вставить значение переменной в строку. Например, можно указать точность, округление и заполнение нулями.
👍4
Если ты верстальщик или фронтдендер, тебе 100% пригодятся эти каналы!

Специалист по JavaScript - образовательный канал по JavaScript. Здесь публикуется готовый код, с использованием методов, конструкций и операторов языка, который можно использовать прямо сейчас.

Сеньор Помидор - канал для frontend программистов, с примерами лучших решений на HTML|CSS|JS для твоего проекта и ежедневными заметками, видеоуроками.
Регулярные выражения (REGEX)

Регулярные выражения — более гибкий способ нахождения подстрок в строках. В Python есть встроенный модуль, позволяющий работать с регулярными выражениями, — re. Модуль re содержит функцию search, которая позволит вам найти подстроку

Если вам нужны сложные сопоставления, например, учет регистра — этот метод подойдет вам лучше всего. Но у него есть и недостатки: сложность и скорость работы. То есть, в простеньких задачах его лучше не использовать.
👍6
Возврат нескольких значений из функции

Python позволяет вам возвращать из функции несколько значений.

Для этого необходимо вернуть структуру данных, содержащую эти несколько значений. Например, список количества миль, которые надо пробежать за неделю.

Структура данных — контейнер, хранящий однотипные данные. Эти данные могут быть возвращены из функций. В этой статье мы узнаем, как возвращать несколько значений из структур вроде кортежа, списка и словаря.
👍41🔥1
Pretty-Printing

Сделать JSON более удобочитаемым (pretty-printing) — очень просто. Нужно лишь передать целое число в параметр indent

Это довольно полезно. Особенно если вам часто приходится читать JSON во время работы. Также вы можете использовать использовать команду json.tool прямо в командной строке.
👍7
Поверхностное копирование

Поверхностное копирование создает отдельный новый объект или список, но вместо копирования дочерних элементов в новый объект, оно просто копирует ссылки на их адреса памяти. Следовательно, если вы сделаете изменение в исходном объекте, оно будет отражено в скопированном объекте, и наоборот.
👍9
Глубокое (полное) копирование

Глубокая копия создает новую и отдельную копию всего объекта или списка со своим уникальным адресом памяти. Это означает, что любые изменения, внесенные вами в новую копию объекта или списка, не будут отражаться в исходной. Этот процесс происходит следующим образом: сначала создается новый список или объект, а затем рекурсивно копируются все элементы из исходного в новый.

Короче говоря, оба объекта становятся полностью независимы друг от друга. Это похоже на концепцию передачи по значению в таких языках, как C ++, Java и C #.
👍6
Функция filter():

Функция filter() используется для создания списка, состоящего из значений, для которых функция возвращает true.

Так же, как и map(), эта функция может использовать в качестве параметра пользовательские функции, а также lambda-функции.
👍52🔥2
Кастомная функциональность

Этот декоратор — это всего лишь пример того, как вы можете проверить некоторые разрешения совсем просто и на 100% настроить это так, как вам необходимо.

Представьте, что у вас есть блог, магазин, форум… Если у пользователей должно быть несколько очков активности, чтобы написать отзыв, это стало бы хорошим способом избежать спама. Мы создадим декоратор, чтобы проверить, что пользователь вошел в систему и имеет более 10 баллов, поэтому может написать отзыв, в противном случае мы не дадим ему сделать этого.
👍2🤔2👏1
Group Required

Иногда нам нужно защитить некоторые вьюшки, чтобы позволить определенной группе пользователей получить к ней доступ. Вместо того, чтобы проверять в этой вьюшке, принадлежит ли пользователь к этой группе/группам, мы можем использовать следующий декоратор.
👍2🔥1
re.split()

Данный метод разделяет строку по заданному шаблону. Если шаблон найден, оставшиеся символы из строки возвращаются в виде результирующего списка. Более того, мы можем указать максимальное количество разделений для нашей строки.

Синтаксис: re.split(шаблон, строка, maxsplit = 0)

Возвращаемое значение может быть либо списком строк, на которые была разделена исходная строка, либо пустым списком, если совпадений с шаблоном не нашлось.
👍51🔥1
Ajax required

Этот декоратор проверяет, является ли запрос AJAX-запросом, этот декоратор полезен, когда мы работаем с Javascript-фреймворками такими как jQuery, и является хорошим способом защиты нашего приложения.
👍4🔥1
Когда стоит использовать замыкания? (ч.1)

Так для чего же нужны замыкания?

Замыкания позволяют избежать использования глобальных (global) значений и обеспечивают некоторую форму сокрытия данных. Для этого также может использоваться объектно-ориентированный подход.

Если в классе необходимо реализовать небольшое количество методов (в большинстве случаев один метод), замыкания могут обеспечить альтернативное и более элегантное решение.
👍31🔥1
Когда стоит использовать замыкания? (ч.2)

Иногда количество атрибутов и методов становится больше, лучше реализовать класс.

Вот простой пример, где замыкание может быть более предпочтительным, чем определение класса и создание объектов. Но выбор остается за вами.
🔥31👍1
Элегантный способ перевернуть строку в Python - Цикл

Мы можем перевернуть строку и в цикле.

Для начала создадим массив (список) reversedString[].

После этого мы можем запустить цикл, где итерируемой переменной будет index — длина списка.

На каждой итерации цикла в reversedString добавляется символ из строки с индексом [index-1]. После этого index уменьшается на 1.

Цикл продолжается до тех пор, пока переменная index не станет равна 0.
👎3🔥3😱3👍2🥱2
Яндекс Практикум запускает бесплатный курс “Основы работы с Git”. Вы сможете полностью освоить популярную систему контроля версий кода за 20 часов.

Курс будет полезен тем, кто только погружается в разработку, и тем, кто не первый год пишет код:
— новички освоят инструменты, которые точно пригодятся в профессии;
— знатоки структурируют знания и повысят свою продуктивность.

На курсе вы научитесь:
— Писать код вместе с другими разработчиками и разработчицами;
— Отменять и откладывать изменения в своих ветках;
— Использовать локальный и удалённый репозиторий;
— Соединять ветки и разрешать конфликты;
— Управлять репозиторием через IDE и консоль;
— Понимать принципы и культуру командной разработки.

И освоите необходимые инструменты и технологии:
— GitHub;
— Terminal;
— GitHub Desktop;
— Bitbucket;
— GitBash;
— GitLab.

Переходите по ссылке и начинайте заниматься уже сейчас.
👍61
Облегчите перебор нескольких списков с помощью zip()

С помощью встроенной функции zip() мы можем все немного упростить.

Обратите внимание: функция zip() возвращает zip-объект, но с помощью приведения типов вы можете преобразовать его — например, с помощью list(), tuple() или dict().
👍41