찾다

 >  Q&A  >  본문

Python 초보자가 a+=a와 a=a+a의 차이점에 대해 질문했습니다.

첫 번째 코드:

으아악

실행 결과:

두 번째 코드:

으아악

실행 결과:

내 질문:
num += num은 mun = num+num과 직접적으로 동일하면 안 됩니까? 계산된 결과가 왜 다른가요? 무슨 일이야

三叔三叔2762일 전1180

모든 응답(4)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-06-13 09:26:36

    이런 것도 시도해 볼 수 있습니다.

    으아악

    변수에 할당된 메모리 주소는 id() 함수를 통해 얻을 수 있습니다. 실험을 통해 +를 사용하는 변수의 주소가 변경된 것으로 나타났는데, 이는 num+=num과 num=num+num은 동일하지 않습니다라고 말씀하신 것입니다.
    그러나 다음과 같은 섹시한 동작을 하면 뺨을 맞는 것을 발견하게 될 것입니다

    으아악

    배정된 주소가 계속 바뀌는 것 같아요.
    이유는 Python의 데이터 구조가 변경 가능(mutable)과 불변(immutable)으로 나누어지기 때문입니다.
    변수 유형의 경우 =와 +=는 위 목록에 표시된 것처럼 분명히 다릅니다.
    +는 연결 작업을 나타내고 +=는 추가를 나타냅니다.
    불변 유형의 경우 =와 +=는 위의 튜플과 같이 동일한 작업입니다.
    변수형과 불변형의 본질은 메모리 공간이 가변적인가에 있습니다~

    회신하다
    0
  • PHP中文网

    PHP中文网2017-06-13 09:26:36

    가장 먼저 눈에 띄는 것은 차이점

    으아악

    호출된 메소드가 __add__, __iadd__라는 것을 알 수 있습니다.
    더하기 연산자는 num에 할당할 새 개체를 계산합니다.
    증분 할당 연산자는 원래 참조를 수정합니다

    참조: https://stackoverflow.com/que...

    회신하다
    0
  • 滿天的星座

    滿天的星座2017-06-13 09:26:36

    Python에서는 인수가 할당에 의해 전달된다는 점을 기억하세요.

    Python에서는 할당이 참조가 아닌 매개변수를 전달하는 데 사용되므로 a를 함수에 전달할 때 a 자체가 아닌 a의 값을 전달합니다. a 자체를 변경하려면 return을 사용하여 값을 다시 전달해야 합니다

    으아악

    결과:

    으아악

    회신하다
    0
  • 世界只因有你

    世界只因有你2017-06-13 09:26:36

    파이썬에서 a=a+b는 먼저 새 개체를 만들고 변수 a가 이 개체를 참조하도록 하는 것을 의미합니다. a+=b는 a가 참조하는 개체의 을 a+b

    의 값으로 변경합니다.

    회신하다
    0
  • 취소회신하다