Site icon Wireframe

Whats new in python 3.6

파이썬 3.6에서 달라지는 점

이번주 금요일1에 파이썬 3.6이 발표될 예정이다. 몇 가지 새로워지는 변경사항에 대해 살펴보자.

새 기능들

포맷 문자열 리터럴

str.format()을 사용하던 문자열 포맷팅이 f" ... " 리터럴로 사용할 수 있게 된다. 해당 리터럴 내에서는 { } 내에 현재 스코프의 변수를 이용해서 치환될 수 있다.

name = "John"
greet = f"He said his name is {name}"
print(greet) # "He said his name is John"
width = 10
precision = 4
value = decimal.Decimal("12.34567")
print(f"result: {value: {width}.{precision}}")
# "result: 12.35"
# ^^^^^ 5

변수 어노테이션

타입 힌트라고 알려진 변수 어노테이션을 명시할 수 있다.

primes: List[int] = []
captain: str # there is no initial value

PEP484에 보다 자세한 명세가 있다. Iterable, Callable 등의 프로토콜 타입 및 제네릭도 쓸 수 있다. 단 이는 어노테이션일뿐이며 파이썬 자체가 정적 타입언어가 되는 것은 아니다.

숫자에 언더스코어 적용 가능

Swift 처럼 숫자 사이에 언더스코어를 넣어 가독성을 향상시킬 수 있게 됐다. 또한 포맷팅에서도 :_x, :,f 등을 이용해서 자리수마다 기호를 공짜로 삽입할 수 있다.

비동기 축약

async for, await 을 리스트 축약 문법에 적용할 수 있다.

result = [i async for i in aiter() if i % 2]
result = [await fun() for fun in funcs if await condition()]

클래스 정의 문법의 단순화

__init_subclass라는 클래스 메소드를 새로 도입하였고, 이를 통해서 서브 클래싱을 통한 새 클래스를 만드는 문법을 단순화할 수 있다.2

그외

파이썬 구현체의 개선점

표준 라이브러리 개선점

윈도 환경에서의 개선


  1. https://www.python.org/dev/peps/pep-0494/ 에서 12월 15일이라고 했는데 표준시 기준이라면 이번 주말쯤이 될 듯 하다. 
  2. PEP 487에 정의되어 있다. 공식문서 참고 
Exit mobile version