프로젝트 막마지에 개인적인 경사(?)까지 겹쳐서 포스팅이 조금 늦었습니다.
노트북을 침대에서 사용하려고 하니 목이 아파서 장시간의 타이핑이 힘들더라구요.

이제 남은 파이썬 3.1의 변화에 대해서 알아보겠습니다.

1) 천단위 구분자(Format specifier for thousands separator)

관용적으로 통화, 수치를 표기시 읽는 사람이 쉽게 알아볼 수 있도록, 천 단위 마다 ","(쉼표)를 두어 표기를 합니다. 
또한 서양권에서는 언어로 숫자를 나타낼 시에도 이 방법이 훨씬 자연습니다.
(반면 한국은 4자리 숫자가 더 자연스럽지 않은가요? 음 ~,.~)
123456789 => 123,456,789

이러한 표기법을 지원하기 하기 위하여 내장함수 format()에 새로운 옵션이 추가되었습니다.
각 옵션에 대한 설명은 Python Reference Site에서 참고할 수 있기에,
이번에는 새롭게 추가된 천단위 구분자에 대해서 알아보겠습니다.

integer, float, complex 자료형이나 Decimal 객체를 format() 함수, str.format() 메소드의 인자로 출력 형식을 지정할 때 
"," 옵션을 설정하게 되면, 아래와 같이 3자리마다 구문자가 설정되게 됩니다. 
이 옵션은 기존 출력 형식 지정자와 혼용이 가능합니다.

또한 천단위 구분자를 ","(쉼표)가 아닌 다른 문자로 변경하기 위해서는, 
조금은 꽁수(?)이지만 아래와 같이 str.replace() 메소드로 손쉽게 변경할 수 있습니다.


2) with ~ as 구문의 multiple context
with ~ as 구문은 3.1 버전에 와서는 더욱 강력해졌습니다. 
기존에 2개 이상의 객체를 with ~ as 구문으로 관리하기 위해서는 
아래와 같이 중첩하여 사용하는 방법 밖에는 없었습니다.

하지만 3.1 버전에서는 with ~ as 구문을 중첩하지 않고, 
","(콜론)으로 구분하여 사용이 가능합니다.
그로 인하여 개발자는 더욱 간결하게 코드를 작성할 수 있게 되었으며, 
코드의 가독성 또한 더욱 높아지게 되었습니다.


3) collections.Counter class

기존 파이썬에서는 아래와 같이 튜플이나 리스트 객체에 중복을 허용한 경우, 
각 아이템이 해당 객체에 몇 개씩 저장되었는지 알기 위해서는 
다음과 같이 추가적인 코드를 작성해야만 했습니다.

그다지 어려운 코드는 아니지만, 역시 손이 가야하는 것은 사실입니다.
하지만 3.1 버전에서는 이러한 동작을 하는 Counter 클래스가 추가되었습니다.
사용법은 길게 설명할 필요없이 아래와 같습니다.


4) round() 함수가 integer인 경우, integer를 반환

자잘하게 수정된 내용 중 주목할만한 것으로 round() 함수가 수정되었습니다.
3.0 버전까지는 아래와 같이 integer 형의 값이 입력되어도 반환값은 항상 float 형이었습니다.

하지만 3.1에서는 첫 인자가 integer인 경우, 
그 결과도 integer 형으로 반환하도록 수정되었습니다.


5) format()의 자동 넘버링
파이썬 3.0에 추가된 format() 메소드는 아래와 같이 인자의 인덱스나 키값을 명시적으로 표기해야만 했습니다.


하지만 순차적으로 증가하는 경우라면, 다음과 같이 특별히 인덱스를 기입하지 않고 '{}'만 표기할 수 있습니다.


그외 내부적인 성능 개선을 위하여 내장 모듈 중 일부가 순수 파이썬 코드에서 C코드로 수정이 되었습니다.


저작자 표시
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by again4you