변수에 할당된 메모리 주소는 id() 함수를 통해 얻을 수 있습니다. 실험을 통해 +를 사용하는 변수의 주소가 변경된 것으로 나타났는데, 이는 num+=num과 num=num+num은 동일하지 않습니다라고 말씀하신 것입니다. 그러나 다음과 같은 섹시한 동작을 하면 뺨을 맞는 것을 발견하게 될 것입니다
으아악
배정된 주소가 계속 바뀌는 것 같아요. 이유는 Python의 데이터 구조가 변경 가능(mutable)과 불변(immutable)으로 나누어지기 때문입니다. 변수 유형의 경우 =와 +=는 위 목록에 표시된 것처럼 분명히 다릅니다. +는 연결 작업을 나타내고 +=는 추가를 나타냅니다. 불변 유형의 경우 =와 +=는 위의 튜플과 같이 동일한 작업입니다. 변수형과 불변형의 본질은 메모리 공간이 가변적인가에 있습니다~
이런 것도 시도해 볼 수 있습니다.
으아악변수에 할당된 메모리 주소는 id() 함수를 통해 얻을 수 있습니다. 실험을 통해
으아악+
를 사용하는 변수의 주소가 변경된 것으로 나타났는데, 이는 num+=num과 num=num+num은 동일하지 않습니다라고 말씀하신 것입니다.그러나 다음과 같은 섹시한 동작을 하면 뺨을 맞는 것을 발견하게 될 것입니다
배정된 주소가 계속 바뀌는 것 같아요.
이유는 Python의 데이터 구조가 변경 가능(mutable)과 불변(immutable)으로 나누어지기 때문입니다.
변수 유형의 경우 =와 +=는 위 목록에 표시된 것처럼 분명히 다릅니다.
+는 연결 작업을 나타내고 +=는 추가를 나타냅니다.
불변 유형의 경우 =와 +=는 위의 튜플과 같이 동일한 작업입니다.
변수형과 불변형의 본질은 메모리 공간이 가변적인가에 있습니다~
가장 먼저 눈에 띄는 것은 차이점
으아악호출된 메소드가 __add__, __iadd__라는 것을 알 수 있습니다.
더하기 연산자는 num에 할당할 새 개체를 계산합니다.
증분 할당 연산자는 원래 참조를 수정합니다
참조: https://stackoverflow.com/que...
Python에서는 인수가 할당에 의해 전달된다는 점을 기억하세요.
Python에서는 할당이 참조가 아닌 매개변수를 전달하는 데 사용되므로 a를 함수에 전달할 때 a 자체가 아닌 a의 값을 전달합니다. a 자체를 변경하려면 return을 사용하여 값을 다시 전달해야 합니다으아악
결과:으아악
파이썬에서 a=a+b는 먼저 새 개체를 만들고 변수 a가 이 개체를 참조하도록 하는 것을 의미합니다. a+=b는 a가 참조하는 개체의 값을 a+b
의 값으로 변경합니다.