"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python에서 연결 할당은 어떻게 작동하나요? 실제로 여러 순차 할당과 동일합니까?

Python에서 연결 할당은 어떻게 작동하나요? 실제로 여러 순차 할당과 동일합니까?

2024-11-08에 게시됨
검색:129

How do chained assignments work in Python? Are they truly equivalent to multiple sequential assignments?

Python의 연쇄 할당 이해

"x = y = somefunction()"과 같은 표현식으로 예시되는 Python의 연쇄 할당이 촉발되었습니다. 여러 순차 할당과의 동등성에 관한 토론("x = somefunction(); y = somefunction()"). 이 문제를 명확히 하기 위해 연결된 할당의 작동을 자세히 살펴보겠습니다.

연결된 할당에서는 가장 왼쪽 대상이 먼저 할당됩니다. 따라서 "x = y = somefunction()"은 다음과 동일합니다:

temp = somefunction()
x = temp
y = temp

왼쪽 대상이 오른쪽 대상에 할당되기 전에 임시 변수 "temp"의 값을 수신하므로 이 순서가 중요합니다. 이는 연결된 할당 함수의 분해에서 분명하게 드러납니다:

>>> def chained_assignment():
...     x = y = some_function()
...
>>> import dis
>>> dis.dis(chained_assignment)
  2           0 LOAD_GLOBAL              0 (some_function)
              3 CALL_FUNCTION            0
              6 DUP_TOP
              7 STORE_FAST               0 (x)
             10 STORE_FAST               1 (y)
             13 LOAD_CONST               0 (None)
             16 RETURN_VALUE

함수에 의해 반환된 값은 먼저 "x"에 저장되고 그 다음 "y"에 저장됩니다.

이러한 이해는 연결된 할당의 동작을 이해하는 데 중요합니다. 예를 들어, "x = y = []"와 같은 표현은 피해야 합니다. "x"와 "y"는 모두 동일한 목록을 참조하기 때문입니다. 대신 "x = []" 및 "y = []"와 같은 별도의 할당을 선호하여 고유한 목록을 만듭니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3