Понимание назначения нескольких переменных в одной строке в Python

#python-2.7 #python-imaging-library

#python-2.7 #python-imaging-library

Вопрос:

Я не уверен, как правильно задать этот вопрос, потому что я пытаюсь понять то, чего я еще не понимаю, и поэтому я не знаю правильной терминологии для использования, но я наткнулся на этот фрагмент кода в руководстве YouTube по PIL здесь.

Вопрос

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

 import Image

filename = "py.png"
image = Image.open(filename)
size = width, height = image.size
  

Что я пробовал

Я пытался сломать логику последней строки, но для меня это не имеет смысла:

 # assign value of width to size variable?     
size = width 
# assign value of image.size to height variable?
height = image.size 
  

Проблемы, которые я вижу с этим, заключаются в:

  • width не определено.

  • image.size представляет размеры изображений, т.Е. (512,512) так что, похоже, это не было бы подходящим значением для height .

Я уверен, что это очень просто, я просто пока не понимаю.

Ответ №1:

Решение

Я думаю, что я понял это, выполнив следующее:

 >>> size = width, height = 320, 240;
>>> size
(320, 240)
>>> width
320
>>> height
240
  

Итак, по сути, код в исходном сообщении гласит:

 >>> size = width, height = 512, 512;
>>> size
(512, 512)
>>> width
512
>>> height
512
  

Что означает:

«Переменная size — это кортеж, состоящий из двух значений ( width и height ), а их значениями являются 512 и 512 соответственно».

Механика этого еще не совсем усвоена, но на данный момент достаточно хороша.

Комментарии:

1. Вам нужно прочитать это в обратном порядке… , используется для создания кортежей… — таким образом, 512, 512 создается кортеж из двух элементов, которые распаковываются в width, height , затем size присваивается кортежу width, height … Короче говоря, width и height содержат отдельные значения, но при использовании распаковки они также рассматриваются как кортеж для присвоения слева…