Python a, b = b, a + b

Это мой первый вопрос, и я начал изучать Python, поэтому я просто спрошу. Есть ли разница между:

a, b = b, a + b and a = b b = a + b 

когда вы пишете его в приведенном ниже примере, он показывает разные результаты.

 def fib(n): a, b = 0, 1 while a < n: print(a, end=' ') a, b = b, a + b print() fib(1000) def fib(n): a, b = 0, 1 while a < n: print(a, end=' ') a = b b = a + b print() fib(1000) 

5 Solutions collect form web for “Python a, b = b, a + b”

В a, b = b, a + b , выражения в правой части оцениваются перед назначением левой стороне. Таким образом, это эквивалентно:

 c = a + b a = b b = c 

Во втором примере значение a уже было изменено на время b = a + b . Следовательно, результат отличается.

Линия:

 a, b = b, a + b 

ближе к:

 temp_a = a a = b b = temp_a + b 

где b использует старое значение a до того, как a было переназначено до значения b .

Сначала Python оценивает правое выражение и сохраняет результаты в стеке, затем берет эти два значения и назначает их a и b . Это означает, что a + b вычисляется до изменения a .

См. Как происходит переключение элементов в кортежах python (a, b) = (b, a) внутри? для низкого уровня того, как все это работает, на уровне байт-кода.

Предположим, что мы начинаем с a и b следующим образом:

 a = 2 b = 3 

Итак, когда вы это сделаете:

 a, b = b, a + b 

что происходит, вы создаете кортеж (b, a + b) или (3, 5) а затем распаковываете его в a и b a становится 3 а b становится 5 .

Во втором примере:

 a = b # a is now 3 b = a + b # b is 3 + 3, or 6. 

Я надеюсь, что на вас не повлиял язык C, приоритет оператора присваивания = выше, чем у оператора Comma. Не думайте, что это (a), (b = b), (a + b) … Это назначение кортежа.

a, b = b, a + b аналогично a, b = 0, 1 присваивая значения обеим переменным a, b в одно и то же время. Сначала назначьте a = b а затем b = a + b .

  • Заменить подстроку выборочно внутри строки
  • Как отменить геокодирование серверов с помощью python, json и google maps?
  • Google Cloud Storage с использованием Python
  • Google App Engine TextProperty и UTF-8: когда кодировать / декодировать
  • как читать файл в другом каталоге в python
  • Как использовать внешний .py-файл?
  • Можно ли написать оператор прямой строки с инструкцией if?
  • Разбор кода Python изнутри Python?
  •  
    Interesting Posts for Van-Lav

    Вопросы безопасности `pip -allow-external`

    IOError: Нет такого файла или каталога, записывающего в файл в домашнем каталоге

    Масштабирование цели приводит к тому, что Scikit-learn регрессия SVM разбивается

    Обратная строка: string работает, но строка и другие не

    Преобразовать \ r текст в \ n, так что readlines () работает по назначению

    В python есть способ создать массив ND из цикла for, который выводит на один массив каждую итерацию?

    Python из Python: ограничение функциональности?

    Как получить текст с помощью веб-драйвера selenium в python

    Как связать собственные события в текстовом виджете Tkinter после того, как он будет привязан текстовым виджетами?

    Как «проверить» NoneType в python?

    Учебное пособие по фляжке (auth + authr)

    Невозможно установить lxml на windows, фатальная ошибка C1083: Не удается открыть файл include: 'libxml / xmlversion.h'

    Python – используя для паузы для цикла

    Самый эффективный способ разделить строки в Python

    Можно ли создать несуществующий метод, когда он вызывается в Python?

    Python - лучший язык программирования в мире.