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