Форум сайта python.su
0
Всем привет.
Прошу прощения за вероятно нубский вопрос, но в интернете внятного для себя ответа не нашел 
код:
a, b = 0, 1 while b < 10: print(b) a, b = b, a+b
Офлайн
568
mrnoobБез промежуточной переменной у вас получится ерунда. Во второй строке у вас a УЖЕ равно b, поэтому вы получите
a = b
b = a + b?
temp = a a = b b = temp + b
Офлайн
0
FishHookБлин.. я не понимаю. В каком порядке происходит присвоения значений переменной в множественном присвоении.
mrnoob
a = b
b = a + b?
Без промежуточной переменной у вас получится ерунда. Во второй строке у вас a УЖЕ равно b, поэтому вы получите
a = b
b = b + b
а вот этот код
a, b = b, a + b
аналогичен вот такому
temp = a
a = b
b = temp + b
Отредактировано mrnoob (Фев. 5, 2016 02:25:59)
Офлайн
568
mrnoob
не эквивалентен, я не говорил ничего про эквивалентность
логика тут на самом деле другая
выражение
a, b = x, y
a, b = (x, y)
t = x, y a, b = t
Отредактировано FishHook (Фев. 5, 2016 04:33:13)
Офлайн
0
FishHook
mrnoob
не эквивалентен, я не говорил ничего про эквивалентность
логика тут на самом деле другая
выражение
a, b = x, y
это распаковка кортежа. В питоне кортеж определяется не скобками, как думают многие, а запятой.
Эквивалентное выражение вот такое
a, b = (x, y)
или такое
t = x, y
a, b = t
читать
Офлайн
568
Питон - полностью объектно ориентированный язык, это значит, что в нем ВСЁ является объектом.
Массивы - это не объекты. Из этого следуют некоторые особенности, например, невозможно узнать размер произвольного массива. Просто попробуйте поработать с классическими массивами в Си. В ПХП называют массивом то, что массивом не является. В питоне сущность выполняющая роль массива - список (list) и используется она очень широко.
Отредактировано FishHook (Фев. 5, 2016 06:00:05)
Офлайн
0
FishHook
Питон - полностью объектно ориентированный язык, это значит, что в нем ВСЁ является объектом.
Массивы - это не объекты. Из этого следуют некоторые особенности, например, невозможно узнать размер произвольного массива. Просто попробуйте поработать с классическими массивами в Си. В ПХП называют массивом то, что массивом не является. В питоне сущность выполняющая роль массива - список (list) и используется она очень широко.
Офлайн
0
В общем как я понял в выражении
a, b = x, y
a, b - первым действием интерпретируется как имя переменной
эта переменная содержит значения x, y
далее она замыкается на себе, как система
кошмар
Офлайн
857
mrnoobЕсли выполнишь по отдельности каждый вариант, то получишь разные результаты.
чем отличается multiple assessment a, b = b, a + b от обычного a = b
b = a + b?
>>> a, b = 1, 2 >>> a, b (1, 2) >>> a = b >>> b = a + b >>> a, b (2, 4) >>>
>>> a, b = 1, 2 >>> a, b (1, 2) >>> a, b = b, a + b >>> a, b (2, 3) >>>
FishHookТам, кстати, не классические массивы, классические массивы - в бейзике и паскале. Поэтому там можно передавать массив целиком в функцию, а в C для такой передачи нужно упаковывать его в структуру (что редко делается).
Просто попробуйте поработать с классическими массивами в Си.
Отредактировано py.user.next (Фев. 5, 2016 06:54:33)
Офлайн
0
py.user.nextэто особенность кортежей ?
Отредактировано mrnoob (Фев. 5, 2016 06:56:54)
Офлайн