Веб-версияОткрыть в Telegram

СообщениеГид по множественному присваиванию

14 мая 2023
P
Ссылка
нажмите — покажем
Гид по множественному присваиванию Уверена, что множественное присваивание в Python видели все. Выглядит оно вот так: >>> x, y, z = 1, 2, 3 >>> x 1 >>> z 3 На самом деле на низком уровне создается tuple и в цикле инициализируется значениями 1, 2, 3. Поэтому с тем же успехом можно не опускать скобки и написать вот так: >>> (x, y, z) = (1, 2, 3) >>> x 1 >>> z 3 И это тоже сработает. Поэтому множественное присваивание еще называют tuple unpacking. Да и чаще всего его, кажется, используют именно с кортежами. Но вообще так можно писать с любыми iterable типами: >>> x, y = [1, 2] >>> y 2 И со строками тоже: >>> x, y = 'hi' >>> x 'h' >>> y 'i' Множественное присваивание, если применять его с оператором *, позволяет делать еще вот такие крутые штуки: >>> numbers = [1, 2, 3, 4, 5, 6] >>> first, *rest = numbers >>> first 1 >>> rest [2, 3, 4, 5, 6] По сути * здесь заменяет слайсы. С тем же успехом можно было написать: >>> first, last = numbers[0], numbers[1:] >>> first 1 >>> last [2, 3, 4, 5, 6] Но через распаковку получается читаемее. Можно даже <<вырезать>> середину: >>> first, *middle, last = numbers И если вам не нужны все промежуточные индексы, то хороший тон это вообще использовать нижнее подчеркивание: >>> first, *_, last = [1, 2, 3, 4, 5, 6] Кстати, если речь о вложенных объектах, то обратите внимание, что копия будет глубокой: >>> color, point = ('blue', (0, 0, 255)) >>> color 'blue' >>> point (0, 0, 255) В некоторых случаях это очень удобно. В общем, множественное присваивание можно использовать не только с кортежами, но и списками, строками и любыми iterable типами. Его плюс в том, что оно позволяет не использовать индексы, а значит, уменьшает склонность к ошибкам и делает код читаемее. А еще оно используется в <<args, kwargs>> синтаксисе, который часто смущает начинающих, но об этом в следующий раз. 🐠
452 ·

Рядом в ленте

PPYTHON IN DEPTH🐍Введение в множества Set' ы в Python реализованы так, что максимально напоминают математические множества. Давайте пройдемся по основным свойствам и возможностяPPYTHON IN DEPTH🐍Умножение контейнеров Один интересный факт из Python. Вы, наверное, знали, что для строк определен оператор умножения и что можно делать так: >>> 'привет ' * 4
это сообщение
PPYTHON IN DEPTH🐍Введение в декораторы В нескольких следующих постах я хочу поговорить о декораторах. Будет базовое определение, мотивация их использовать, всякие хитрости, а ещPPYTHON IN DEPTH🐍Комбинируем декораторы Допустим, у нас есть функции, которые работают со строками. Возьмем, например, функцию, которая возвращает строчку из Zen of Python: def
🐍🐍Python🪆🐍Python🪆@python_chat_ru · группа · Технологии
20участников39сообщений в индексе
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем