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