Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 25, 2009 17:21:29

tmvrus
От:
Зарегистрирован: 2009-11-25
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Проясните ситуацию

Здравствуйте.
Поставила в тупик вот такая конструкция языка

x = 'X'
y = 'Y'
x,y = y,x
я наивно полагал что это тоже самое что и
x = 'X'
y = 'Y'
x = y
y = x
То есть в итоге в переменные имеют одно и тоже значение, во втором случае это так а в первом нет.
проясните такое повидение интерпретатора



Офлайн

#2 Ноя. 25, 2009 17:26:34

tmvrus
От:
Зарегистрирован: 2009-11-25
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Проясните ситуацию

питон версии 2.6.2



Офлайн

#3 Ноя. 25, 2009 17:34:21

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

Проясните ситуацию

вроде, это называют “синтаксический сахар” :) приятная конструкция для массового присваивания, которая может использоваться для обмена переменными значениями



Офлайн

#4 Ноя. 25, 2009 18:18:28

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Проясните ситуацию

> x,y = y,x

1. Справа. y,x это кортеж. Т.е. эти значения заворачиваются в кортеж.
2. Слева. Это другой кортеж, просто в “развернутом” виде (не знаю как правильнее выразиться, поправьте мой русский).

Вот расписанная операция сего:

tuple_src  = (y, x)
tuple_dest = tuple_src
x = tuple_dest[0]
y = tuple_dest[1]
Это тоже самое:
(x, y) = (y, x)
Просто для образования кортежа необязательно указывать скобки: x, – это кортеж, будь уверен :-). Как как-то пропустил такую запятую и весь день обшаривал тысячи строк кода в непонятках.
И почитай PEP8, да и вообще, после запятых обычно ставятся пробелы.

..bw



Отредактировано (Ноя. 25, 2009 18:20:46)

Офлайн

#5 Ноя. 26, 2009 16:32:37

tmvrus
От:
Зарегистрирован: 2009-11-25
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Проясните ситуацию

спасибо, теперь все гораздо понятнее



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version