본문 바로가기
Python/Python FAQ

Python 파이썬에서 두 변수를 교환하는 표준화된 방법이 있습니까?, Is there a standardized method to swap two variables in Python?

by 베타코드 2023. 12. 4.
반응형

질문


파이썬에서는 다음 구문을 사용하여 두 변수의 값이 서로 바뀌는 것을 본 적이 있습니다:

left, right = right, left

이것이 두 변수의 값을 바꾸는 표준적인 방법인지, 아니면 관례적으로 가장 일반적으로 두 변수가 교환되는 다른 방법이 있는지 궁금합니다.


답변


파이썬은 표현식을 왼쪽에서 오른쪽으로 평가합니다. 할당을 평가할 때 오른쪽 표현식이 왼쪽 표현식보다 먼저 평가됩니다.

파이썬 문서: 평가 순서

즉, 표현식 a,b = b,a 에 대해 다음과 같습니다:

  • 오른쪽 표현식 b,a 가 평가되어, 즉 메모리에 두 요소를 가진 튜플이 생성됩니다. 두 요소는 프로그램 실행 중에 지정된 식별자 ba에 의해 지정된 객체입니다.
  • 이 튜플 객체에 대한 할당이 아직 이루어지지 않았지만, 상관없습니다. 파이썬은 내부적으로 이 튜플이 어디에 있는지 알고 있습니다.
  • 그런 다음, 왼쪽 표현식이 평가됩니다. 즉, 튜플이 왼쪽 표현식에 할당됩니다.
  • 왼쪽 표현식은 두 식별자로 구성되어 있으므로, 첫 번째 식별자 a가 튜플의 첫 번째 요소에 할당되고 (이 요소는 스왑 전에 b로 알려진 객체입니다)
    두 번째 식별자 b는 튜플의 두 번째 요소에 할당됩니다 (이 요소는 스왑 전에 a로 알려진 객체입니다)

이 방법으로 식별자 ab에 할당된 객체가 실제로 스왑되었습니다.

그러므로, 귀하의 질문에 대한 답은: 네, 이것은 두 객체 간의 식별자를 교환하는 표준 방법입니다.
그리고, 이 객체들은 변수가 아니라 객체입니다.

반응형

댓글