
106
1
부
데이터 구조체
사실 이런 상황은 상당히 드물다.
20
년 동안 파이썬을 사용하면서 필자는 실제로 이런 특성에
따른 문제로 고생하는 개발자를 본 적이 없다.
이 코드에서는 다음과 같은 세 가지 교훈을 얻을 수 있다.
●
가변 항목을 튜플에 넣는 것은 좋은 생각이 아니다.
●
복합 할당은 원자적인 연산이 아니다 (앞의 예제에서 일부 연산이 수행된 후 예외가 발생했다).
●
파이썬 바이트코드는 살펴보기 그리 어렵지 않으며, 내부에서 어떤 일이 발생하는지 알아보는 데 도움이 된다.
시퀀스 연결에 덧셈과 곱셈 연산자를 사용하는 미묘한 문제를 살펴봤으니, 이제 시퀀스에 적용
하는 또 다른 중요한 연산인 정렬을 알아보자.
2
.
9
list
.
sort
( )와
sorted
( ) 내장 함수
list.sort( )
메서드는 사본을 만들지 않고 리스트 내부를 변경해 정렬한다. 이 메서드는 수
신자
12
를 변경하고 새로운 리스트를 생성하지 않았음을 알려주기 위해
None
을 반환한다. 이
것은 파이썬
API
의 중요한 관례다. 객체를 직접 변경하는 함수나 메서드는
None
을 반환해서
객체가 변경되었고 새로운 객체가 생성되지 않았음을 호출자에게 알려 줘야 한다.
random.
shuffle( )
함수도 이와 동일하게 작동한다.
NOTE
객체를 직접 변경했음을 알려 주려고
None
을 반환하는 관례에는 ...