반응형
질문
파이썬에서는 다음 구문을 사용하여 두 변수의 값이 서로 바뀌는 것을 본 적이 있습니다:
left, right = right, left
이것이 두 변수의 값을 바꾸는 표준적인 방법인지, 아니면 관례적으로 가장 일반적으로 두 변수가 교환되는 다른 방법이 있는지 궁금합니다.
답변
파이썬은 표현식을 왼쪽에서 오른쪽으로 평가합니다. 할당을 평가할 때 오른쪽 표현식이 왼쪽 표현식보다 먼저 평가됩니다.
즉, 표현식 a,b = b,a
에 대해 다음과 같습니다:
- 오른쪽 표현식
b,a
가 평가되어, 즉 메모리에 두 요소를 가진 튜플이 생성됩니다. 두 요소는 프로그램 실행 중에 지정된 식별자b
와a
에 의해 지정된 객체입니다. - 이 튜플 객체에 대한 할당이 아직 이루어지지 않았지만, 상관없습니다. 파이썬은 내부적으로 이 튜플이 어디에 있는지 알고 있습니다.
- 그런 다음, 왼쪽 표현식이 평가됩니다. 즉, 튜플이 왼쪽 표현식에 할당됩니다.
- 왼쪽 표현식은 두 식별자로 구성되어 있으므로, 첫 번째 식별자
a
가 튜플의 첫 번째 요소에 할당되고 (이 요소는 스왑 전에 b로 알려진 객체입니다)
두 번째 식별자b
는 튜플의 두 번째 요소에 할당됩니다 (이 요소는 스왑 전에 a로 알려진 객체입니다)
이 방법으로 식별자 a
와 b
에 할당된 객체가 실제로 스왑되었습니다.
그러므로, 귀하의 질문에 대한 답은: 네, 이것은 두 객체 간의 식별자를 교환하는 표준 방법입니다.
그리고, 이 객체들은 변수가 아니라 객체입니다.
반응형
댓글