Python 3.12 업데이트

Python 3.12 정식 발표가 2023/10/02에 예정되어 있다. 현재 Python 3.12 0rc3가 공개되었고 여러 업데이트가 이루어졌다. 

This release, 3.12.0rc3, is the absolutely last release preview for Python 3.12.
There will be no ABI changes from this point forward in the 3.12 series.
 

What’s New In Python 3.12

Release, 3.12.0rc3,, Date, September 22, 2023,. This article explains the new features in Python 3.12, compared to 3.11. For full details, see the changelog. Summary – Release highlights: New gramm...

docs.python.org


Fstring 개선

f"This is the playlist: {", ".join(songs)}"
f"""{f'''{f'{f"{1+1}"}'}'''}"""
f"This is the playlist: {"\N{BLACK HEART SUIT}".join(songs)}"
  • f-string 내 따옴표 " " 중첩이 가능하다.
  • f-string 내 어떠한 표현식도 작성 가능하다. 따라서, f-string을 중첩하는 것도 가능하다. 
  • \N을 활용해 유니코드 기호를 표현할 수 있다. 

Per-Interpreter GIL

3.12의 내용

  • 서브 인터프리터 단위로 각각의 GIL 생성
  • 멀티 코어 CPU를 활용한 성능 향상 기대
  • 3.12는 C API만 공개 (3.13에서 Python API 공개 예정)

Type 힌트 향상

from typing import TypedDict, Unpack

class Movie(TypedDict):
  name: str
  year: int

def foo(**kwargs: Unpack[Movie]): ...

TypedDict, Unpack을 활용한 keyword arguments 타입 힌트

def max[T](args: Iterable[T]) -> T:

Generic 형식의 타입 힌트

type Point = tuple[float, float]

type 구문을 활용한 별칭 생성


기타 주요 업데이트

  • 에러 메세지 개선
  • PEP698: typing.override 데코레이터를 통한 검사
  • PEP 709: Comprehension을 이용한 표현식이 별도의 함수가 아닌 인라인으로 실행되어 속도 향상
  • 정규 표현식을 활용한 문자 교체 속도 향상: re.sub() & re.subn()
  • sys.monitoring을 활용한 CPython의 효율적인 모니터링 제공
  • PEP 688: Python API로 buffer protocol 제어 가능

관련 글

 

Python 3.11 업데이트

except* & ExceptionGroup except*와 ExceptionGroup이라는 새로운 문법이 추가되었다. try: raise ExceptionGroup("Group1", [TypeError("a"), ValueError("b")]) except* TypeError as e: print(f"Error: {e!r}") except* ValueError as e: print(f"Error: {

denev6.tistory.com

 

 

Python 3.10 업데이트

Python 3.10이 업데이트 되면서 변화되거나 추가된 사항들이 있다. 공식문서: https://www.python.org/downloads/release/python-3100/ match / case 패턴 매칭은 C 언어에서 제공하는 switch/case 문과 유사하다. 하지만

denev6.tistory.com