Я тестирую скрипт python, где мне приходится постоянно хранить старые значения двух переменных, а затем возвращать их через функцию. Для этого я взял ряд Фибоначчи в качестве примера:Динамическое назначение переменной в Python
def fibonacci(n):
a=0;b=1;cnt=0;
while True:
if (cnt > n):
return;
yield a;
c=b;b=a+b;a=c;
cnt +=1;
fib=fibonacci(5)
for x in fib:
print(x,end=" ")
Все работает отлично, как и ожидалось здесь, а выход также, как и ожидалось. Однако я попытался написать его по-другому, вместо того, чтобы использовать дополнительную переменную «c», я могу эффективно выполнять обмен старых значений, и я практически столкнулся с этим (хотя понятия не имею, как здесь работает задание):
Вместо линии:
c=b;b=a+b;a=c;
использовано:
a,b=b,a+b
Так подробное объяснение будет оценено.
не помещать команды в одну строку 'c = b; b = a + b; a = c;' делает код нечитаемым для людей. – furas
Это возможно, потому что python поддерживает [распаковка] (https://www.safaribooksonline.com/library/view/python-cookbook-3rd/9781449357337/ch01s01.html) –
запятая ',' используется для создания 'tuple' - поэтому вы «упаковываете» значения в кортеж 'b, a + b', а затем« распаковываете »этот кортеж в переменные' a, b' – furas