(a+=b) != (a=a+b)

4371 단어 codenewbiepython
Python의 복합 연산자에 익숙할 것입니다.

그렇지 않은 사람들을 위해.표현을 줄이는 데 사용됩니다.

예시




a = 2

a의 값을 1씩 증가시키려면 아래 표기법을 사용해야 합니다.

a = a + 1


그러나 복합 연산자의 도움으로 아래와 같이 할 수 있습니다.

a += 1


본질적으로 a=a+1와 같습니다 (음.. 항상 그런 것은 아님)

위의 규칙을 따르지 않는 경우가 있습니다.

예시



아래의 예를 고려하여,

a = [1,2,3]
b = a
a += [4,5] # Compund operator
print(a)
print(b)


이것은 출력할 것이고,

[1,2,3,4,5]
[1,2,3,4,5]


우리가 예상했던 바로 그거야? 이제 여기에 반전이 있습니다. 이제 복합 연산자 없이 시도하고 출력을 보겠습니다.

a = [1,2,3]
b = a
a = a + [4,5] # Without compound operator
print(a)
print(b)


이것은 출력할 것이고,

[1,2,3,4,5]
[1,2,3]


보시다시피 출력은 목록a에 대해 동일하지만 목록b은 변경됩니다.

이유가 뭐야?




a += [4,5]


위의 경우 목록이 확장됩니다. 따라서 이 목록을 다른 목록에 할당하면 둘 다 변경됩니다.

그러나 아래 방법을 사용할 때. 새 목록을 만들고 값을 추가합니다. 따라서 목록에 영향을 미치지 않습니다b.

a = a + [4,5]

좋은 웹페이지 즐겨찾기