Что такое множественное присваивание

ПРИСВАИВАНИЕ И СОЗДАНИЕ ОБЪЕКТОВ В PYTHON

Оператор присваивания

Для присваивания значений переменным в Python служит оператор «=«.

Выражение, стоящее справа от оператора присваивания, вычисляется, и полученное значение присваивается переменной, стоящей слева от оператора присваивания. При этом предыдущее значение, хранящееся в переменной, стирается и заменяется на новое. Если такой переменной не существует, то она создается и в нее записывается значение.

Создание переменных и объектов в Python происходит с помощью оператора присваивания.

Оператор «=» не следует понимать как равенство. Например, выражение a = 5 следует читать как «присвоить переменной a значение 5».

Cложить значения 5 и 3, результат присвоить переменной x (записать в переменную x).
Прибавить 4 к значению, хранящемуся в переменной a, полученный результат присвоить переменной b (записать в переменную b).
Прибавить 1 к значению, хранящемуся в переменной b, полученный результат присвоить переменной b (записать в переменную b). В результате выполнения этой строчки кода, значение переменной b увеличится на 1.

В правой части значение переменной может использоваться много раз:

Множественное присваивание

Множественное присваивание (позиционное присваивание) в Python реализуется следующим образом: В результате выполнения этой строки кода в переменной a окажется число 5, в переменной b — 3, в переменной c — 1. Количество значений и количество переменных справа и слева от оператора присваивания должно совпадать. При множественном присваивании порядок присваивания формируется слева направо.

С помощью множественного присваивания можно поменять значения переменных между собой.

Множественное присваивание со списками

В переменной a окажется число 5, в переменной b — 3, в переменной c — 1.

Количество переменных должно быть равно количеству элементов списка.

Аналогичным образом это работает и для кортежей.

Множественное присваивание со строками

В a окажется «m», в b — «a», в c — «k», в d — «e».

Количество переменных должно быть равно количеству символов в строке.

Каскадное присваивание

Инициализация переменных

Любая переменная, использующаяся в выражении, должна существовать.

Действительно, переменной «c» в нашей программе не существует и при вычислении выражения a + b + c интерпретатор Python столкнулся с этой проблемой. Попробуем исправить эту ситуацию. Теперь всё нормально и после запуска программы мы получим результат вычислений.

Особенно важно обращать внимание на существование переменной в конструкциях, используемых, например, для счетчиков.

Чтобы код нормально работал, следует создать переменную k, присвоив ей, например, 0. Это называется инициализировать переменную.

Составное присваивание

В составном операторе присваивания используются арифметические операторы.

Пример сложения с присваиванием: Получим Составной оператор += прибавляет к переменной значение выражения справа от оператора присваивания и записывает получившийся результат в эту переменную.

a += 5 эквивалентно a = a + 5.

Составные операторы присваивания используются для сокращения записи.

Таблица с составными операторами присваивания и их эквивалентами

Источник

Переменные, оператор присваивания, типы данных

Это занятие начнем с рассмотрения структуры программы на Python и зададимся вопросом: что из себя представляет простейшая программа? В действительности – это пустой текстовый файл. Да, мы можем запустить такую программу, она исполнится, но ничего не произойдет. Немного усложним ее и напишем, например, просто

это тоже допустимо и программа тоже сработает. Далее, если добавим круглые скобки:

то эта функция будет вызвана и в консоли напечатается пустая строка, то есть, символ перевода на новую строку. Запишем в круглых скобках кавычки:

программа сработает аналогичным образом – выведется пустая строка. Ну а если написать строку:

то в консоль выведется это сообщение. Все эти примеры показывают гибкость и дружелюбие интерпретатора языка Python по отношению к программисту. Но есть и определенные ограничения, например, начальные конструкции всегда должны начинаться с самого начала строки, то есть, ставить пробел перед print нельзя. Например, вот так:

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

Далее, в каждой более-менее состоятельной программе имеются комментарии – это текст, который видит программист, но игнорируемый интерпретатором языка. Чтобы поставить комментарий, используется символ шарп (#), за которым следует текст комментария:

Переменные и их типы

Теперь, когда мы узнали как записывать простейшие программы, пришло время выяснить как Python хранит и представляет различные данные. То есть, поговорить о переменных и их типах.

Строго говоря, в Питоне нет переменных, в привычном смысле: когда переменная является именованным хранилищем данных. Здесь все устроено несколько иначе. Например, если записать вот такую строчку:

то x здесь имя ссылки, которая ссылается на «Hello World!». А сам «Hello World!» представляется в Python как объект, содержащий эту строку. Визуально это можно представить так:

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

То есть, оператор присваивания не копирует данные в переменную, он лишь возвращает ссылку на объект с данными и эта ссылка сохраняется в переменной x.

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

если это какой-либо счетчик, то можно использовать имя

и так далее. Это упрощает понимание программы и облегчает процесс программирования.

Давайте теперь выведем значение нашей ссылки x, используя встроенную функцию

У объекта, на который ссылается x, есть тип данных. Его можно узнать вызвав функцию

и мы увидим в консоли сообщение:

которое говорит, что объект (класс) имеет тип str, то есть, содержит строку. Получается, что в любом объекте, помимо данных, хранится еще и тип данных:

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

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

В этом случае будет автоматически создан новый объект с числом 5 и типом int:

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

Если мы запустим программу, то увидим, что id у x меняется, что говорит об изменении ссылки на новый объект и тип данных теперь int.

А что происходит с объектом, на который теперь нет ссылок? Он автоматически уничтожается сборщиком мусора. В Python реализован алгоритм автоматического удаления данных, на которых нет внешних ссылок. Поэтому программист может совершенно не заботиться об освобождении памяти, занятой ранее каким-либо объектом. И это очень удобно. В частности, вот при таком присваивании:

сначала будет вычислено это выражение 2+3=5, на основе двух временных объектов (не именованных – на них нет ссылок), затем, сформируется новый объект со значением 5, а объекты 2 и 3 уничтожатся сборщиком мусора, т.к. на них нет внешних ссылок. В результате, x будет ссылаться на этот созданный объект со значением 5 и целочисленным типом int.

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

Каскадное присваивание

В Питоне существует, так называемое, каскадное присваивание, которое можно записать так:

В этом случае все три ссылки будут ссылаться на один и тот же объект. И это принципиальное отличие, например, от языка С++, когда в эти переменные просто записался бы 0. Здесь никакого копирования не происходит, а всего лишь именованные ссылки x, y, z ссылаются на один и тот же объект со значением 0.

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

Множественное присваивание

Если нам необходимо каждой ссылке присвоить свой объект, то для этого следует воспользоваться множественным присваиванием:

В этом случае каждая ссылка будет ссылаться на свой объект. Это можно интерпретировать так: кортежу ссылок (переменных) присваивается кортеж соответствующих объектов.

В частности, такое присваивание можно использовать при обмене данными между ссылками. Например, так:

Смотрите, как это просто и удобно. Работает это так. Сначала в правой части формируется кортеж из объектов, на которые ссылаются y и x, а затем, этот кортеж присваивается ссылкам x, y, стоящим слева. В результате происходит их пересвязывание.

В языке С++ это пришлось бы реализовывать через третью переменную:

temp = x;
x = y;
y = temp;

А в Python это всего лишь одна короткая строчка!

Я думаю, теперь вы понимаете, что из себя представляют переменные и как работает оператор присваивания в Python. Остается один открытый вопрос: какие типы данных существуют в этом языке программирования? Встроенные типы данных следующие:

неопределенное значение переменной

Булевый тип: True/False

Комплексный тип (для комплексных чисел)

Специальные объекты для доступа к внутренним данным объекта через protocol buffer

Неизменяемое множество

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

Значение True в самом объекте изменить нельзя. При необходимости мы можем создать другой объект со значением False и установить ссылку a на него:

Предыдущий объект, как мы уже говорили, будет автоматически уничтожен сборщиком мусора.

Обратите внимание, в Питоне булевые значения следует записывать с заглавной буквы:

Писать с малой нельзя – это будет ошибкой.

Следующий целочисленный тип мы уже рассматривали. Он представляет целые числа (как положительные, так и отрицательные) довольно широкого диапазона. Их можно задавать в разных системах счисления, но обычно, используют десятичную запись, шестнадцатиричную и восьмиричную:

Следующий вещественный тип, позволяет записывать числа с плавающей точкой, например, так:

Здесь использована классическая запись и экспоненциальная, когда после символа e указывается степень десятки и на это число выполняется умножение. В результате,

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

Комплексные числа в питоне можно определять так:

(здесь j – это символ мнимой единицы, указывающий мнимую часть числа).

Наконец, строки определяются такими способами:

То есть, их можно записывать в двойных или одинарных кавычках. А как быть, если мы хотим в строке записать кавычки? Например, так:

Есть несколько способов это сделать. Первый – заменить двойные кавычки всей строки на одинарные:

Второй способ – использовать так называемое экранирование символов:

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

Вот мы с вами рассмотрели как объявляются переменные и что они из себя представляют, как работает оператор присваивания, какие базовые типы данных существуют в Python и рассмотрели определение примитивных данных. Все это вы теперь должны хорошо себе представлять.

Видео по теме

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#1. Первое знакомство с Python Установка на компьютер

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#2. Варианты исполнения команд. Переходим в PyCharm

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#3. Переменные, оператор присваивания, функции type и id

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#4. Числовые типы, арифметические операции

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#5. Математические функции и работа с модулем math

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#6. Функции print() и input(). Преобразование строк в числа int() и float()

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#7. Логический тип bool. Операторы сравнения и операторы and, or, not

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#8. Введение в строки. Базовые операции над строками

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#9. Знакомство с индексами и срезами строк

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#10. Основные методы строк

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#11. Спецсимволы, экранирование символов, row-строки

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#12. Форматирование строк: метод format и F-строки

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#14. Срезы списков и сравнение списков

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#15. Основные методы списков

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#16. Вложенные списки, многомерные списки

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#17. Условный оператор if. Конструкция if-else

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#18. Вложенные условия и множественный выбор. Конструкция if-elif-else

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#19. Тернарный условный оператор. Вложенное тернарное условие

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#20. Оператор цикла while

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#21. Операторы циклов break, continue и else

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#22. Оператор цикла for. Функция range()

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#23. Примеры работы оператора цикла for. Функция enumerate()

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#24. Итератор и итерируемые объекты. Функции iter() и next()

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#25. Вложенные циклы. Примеры задач с вложенными циклами

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#26. Треугольник Паскаля как пример работы вложенных циклов

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#27. Генераторы списков (List comprehensions)

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#28. Вложенные генераторы списков

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#29. Введение в словари (dict). Базовые операции над словарями

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#30. Методы словаря, перебор элементов словаря в цикле

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#31. Кортежи (tuple) и их методы

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#32. Множества (set) и их методы

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#33. Операции над множествами, сравнение множеств

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#34. Генераторы множеств и генераторы словарей

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#35. Функции: первое знакомство, определение def и их вызов

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#36. Оператор return в функциях. Функциональное программирование

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#37. Алгоритм Евклида для нахождения НОД

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#38. Именованные аргументы. Фактические и формальные параметры

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#39. Функции с произвольным числом параметров *args и **kwargs

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#40. Операторы * и ** для упаковки и распаковки коллекций

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#41. Рекурсивные функции

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#42. Анонимные (lambda) функции

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#43. Области видимости переменных. Ключевые слова global и nonlocal

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#44. Замыкания в Python

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#45. Введение в декораторы функций

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#46. Декораторы с параметрами. Сохранение свойств декорируемых функций

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#47. Импорт стандартных модулей. Команды import и from

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#48. Импорт собственных модулей

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#49. Установка сторонних модулей (pip install). Пакетная установка

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#50. Пакеты (package) в Python. Вложенные пакеты

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#51. Функция open. Чтение данных из файла

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#52. Исключение FileNotFoundError и менеджер контекста (with) для файлов

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#53. Запись данных в файл в текстовом и бинарном режимах

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#54. Выражения генераторы

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#55. Функция-генератор. Оператор yield

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#56. Функция map. Примеры ее использования

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#57. Функция filter для отбора значений итерируемых объектов

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#58. Функция zip. Примеры использования

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#59. Сортировка с помощью метода sort и функции sorted

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#60. Аргумент key для сортировки коллекций по ключу

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#61. Функции isinstance и type для проверки типов данных

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#62. Функции all и any. Примеры их использования

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#63. Расширенное представление чисел. Системы счисления

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#64. Битовые операции И, ИЛИ, НЕ, XOR. Сдвиговые операторы

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

#65. Модуль random стандартной библиотеки

© 2021 Частичное или полное копирование информации с данного сайта для распространения на других ресурсах, в том числе и бумажных, строго запрещено. Все тексты и изображения являются собственностью сайта

Источник

5 секретов наилучшего использования кортежей в Python

Что такое множественное присваивание. Смотреть фото Что такое множественное присваивание. Смотреть картинку Что такое множественное присваивание. Картинка про Что такое множественное присваивание. Фото Что такое множественное присваивание

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

1. Множественное присваивание

Многие статьи, перечисляющие ловкие приемы Python, включают следующий пример обмена значениями двух переменных без создания третьей. Однако большинство таких статей-перечислений не стремятся объяснить, что именно происходит в этом конкретном случае использования. Понимаете, что я имею в виду? Посмотрим код.

Обмен значений переменных:

В приведенном выше коде (в 3-ей строке) показан способ обмена значений двух переменных в Python. Как видим, после обмена переменные получили новые значения, что нам и требовалось. Теперь рассмотрим синтаксис.

Кортежи без круглых скобок:

Примечателен тот факт, что, несмотря на принадлежность этих двух переменных к однимтипам данных, Python позволяет присвоить им и другие типы (например, для переменной a изначально int и затем str ) благодаря динамической типизации. Таким образом, в процессе своего жизненного цикла переменная может иметь различные типы.

Теперь вы отчетливо понимаете, как работает прием с обменом значений двух переменных, и вам не составит труда разобраться в том, как в целом происходит множественное присваивание. Перед вами стандартный пример. Здесь мы снова обходимся без круглых скобок по обеим сторонам. Если же вы решите их использовать, то результат не изменится.

Этот прием особенно полезен при объявлении множественных переменных в одной строке кода. Однако лучше его использовать только со взаимосвязанными переменными. Например, в данном коде обе из них принадлежат к части HTTP-запроса. Если они семантически разнородны, то лучше будет объявить их в разных строках, чтобы яснее отразить цель этой операции и облегчить понимание кода.

2. Распаковка с символами _ и *

Распаковка кортежа с символом “_” :

Как вы видите, мы заинтересованы в получении сообщения запроса, а не его кода. Следовательно, первую позицию занимает символ “_”. Однако стоит отметить, что, хотя при помощи этого знака мы заявляем о своем намерении не использовать соответствующее значение, он является действительным именем переменной и содержит ссылку на первый элемент. Но имейте в виду, что если в дальнейших операциях снова будет использоваться символ “_”, то ему будет присваиваться последнее значение, в связи с чем это значение не будет всегда одним и тем же (т.е. в нашем случае 200).

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

Распаковка кортежа с символом * :

Как видно из примера, для распаковки объекта tuple мы использовали три переменные. Переменным min_score и max_score соответствуют первый и последний элементы, а valid_scores представляет значения всех средних элементов. А происходит это потому, что при использовании символа * в качестве префикса для valid_scores она подхватывает все значения, не присвоенные другим переменным. Например, сделаем так.

Распаковка кортежа с использование символа * (другие варианты):

3. Переменное количество позиционных аргументов в функциях

Распаковка кортежа с символом * (ошибка):

Распаковка кортежа с символом * (с исправленной ошибкой):

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

В этой связи, вы также могли встречать использование **kwargs в объявлениях функций, которое относится к переменному числу именных аргументов.

4. Относительная неизменяемость

В Python мы располагаем изменяемыми и неизменяемыми типами данных, которые указывают на то, могут или нет меняться значения конкретных объектов после их создания. В рамках данной статьи мы не будем подробно обсуждать такую обширную тему, как изменяемость типов данных. Здесь важно отметить, что кортежи относятся к неизменяемым данным. Обратимся к примеру кода.

В этом примере у нас не получилось присвоить новое значение объекту tuple в указанной позиции. Однако все немного усложнится, если элемент объекта tuple будет изменяемым контейнером. Сможем ли мы его изменить? Без примера не обойтись.

Неизменяемый кортеж с изменяемыми элементами:

Но что же тогда мы имеем в виду, когда продолжаем характеризовать кортежи как неизменяемые типы данных? Дело в том, что неизменяемость кортежей связана не со значениями, которые они содержат, а со ссылками на объекты, и вот эти то ссылки как раз не меняются. Предлагаю проверить,так ли это. В примере ниже мы видим, что даже при изменении значения одного из списков оба они остаются в памяти всё тем же объектом, о чём свидетельствует один и тот же адрес памяти при вызове функции id() для интроспекции.

Изменяемый элемент кортежа:

5. Именованные кортежи

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

В этом коде нам приходится использовать правильный индекс для извлечения конкретного элемента данных, что не совсем удобно и чревато ошибками, упусти мы его из внимания, особенно если речь идет о гораздо большем объеме данных в реальном проекте.

Именованный кортеж — Student:

Именованный кортеж (интроспекция):

Заключение

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *