2016-06-29 5 views
1

저는 Coursera Python 과정을 진행 중이며 일부 속기가 뒤집혀 있습니다.파이썬 For 루프에서 일어나는 일에 대한 설명

x = 0 
    y = 1 
    for i in range(40): 
    x, y = y, x + y 
    print y 

나는 Y는 X + Y 표기 y를 =, 그것은 X와 Y를 추가하고 Y에 새 값을 할당 이해하지만 꽤 X를 따르지 않습니다. 나는 많은 성공없이 문서를 수색했다.

+2

다중 할당에 대한 [here] (https://docs.python.org/2/tutorial/introduction.html#first-steps-towards-programming) 섹션을 참조하십시오. –

+0

엄밀히 말하면,'for'-loop는 구문 오류로 인해 아무 것도하지 않을 것입니다 (적어도 할당 행에서는 들여 쓰기가 안되지만, 마지막으로'print' 문에서). – twalberg

답변

1

X + Y의 값이 할당된다. 왼쪽의 comma은 포장을 풀어야 함을 나타냅니다.

그래서 x는 참조 링크를 연 후 동시에 here

변경되는 방식을 확인할 수 있습니다 x+y

의 값을 가져옵니다 yy의 값을 가져옵니다, visual execution 클릭하고 forward 클릭 유지.

+1

고맙습니다. @ SilentMonk! 그것은 매우 도움이되었습니다. 이 기능은 의미가 있었지만 중간에 '='가있는 구문은 나를 벗어 버리고있었습니다. 그것을 시각화하는 것은 정말로 도움이되었습니다. –

1
x, y = y, x + y 

X는 Y
의 값이 할당되고, Y는 comma는 오른쪽이 yx+y를 포함하는 튜플임을 나타낸다

0

이것은 y에 x를 지정하고 x + y를 y에 지정하지만 "동시에"수행합니다. 같은 것을 시도한 경우

x = y 
y = x + y 
print y 

과 완전히 다른 결과가 나타납니다.

0

이 기능은 sequence packing\unpacking입니다. 두 부분으로 구성되어 있습니다 : = 부호 근처의 오른쪽 표현 표현을 포장 한 다음 오른쪽에서 변수에 압축을 풉니 다.

t = 12345, 54321, 'hello!'는 튜플 포장의 예입니다 : 값 12345, 54321'hello!'는 튜플에 함께 포장되어 있습니다. 순서를 풀고,

x, y, z = t 

이 적절 충분히라고하며 오른쪽에 어떤 순서 작동 : 반대의 작업도 가능합니다. 시퀀스 언 패킹은 시퀀스의 길이와 동일한 수의 요소를 갖기 위해 왼쪽에있는 변수 목록이 필요합니다. 다중 할당은 실제로 튜플 패킹과 시퀀스 언 패킹의 조합입니다.

관련 문제