Python 3.10 ~ 3.14 특이점 정리
2025. 12. 15. 12:16ㆍComputer Science/Python

Python 3.10
- Context Manager에서 괄호 쓰는게 가능해졌습니다. 대충 With (A as one, B as two..) 와 같은게 가능해졌다는 소리입니다.
- SynthaxError가 읽기 쉬워졌습니다! 예전에는 괄호 안닫으면 제대로 표시가 안 됬는데, 이제는 가능합니다!
- 그 외에도 IndentationErrors, AttributeErrors가 혁명적으로 개선되었습니다.
- match-case와 같은 구조적 패턴 문법이 등장했습니다!! 이제 빌어 쳐먹을 elif를 도배하지 않아도 됩니다. 또한 |을 사용하여 파이프라이닝 마냥 결합할수도 있습니다.
def http_error(status):
match status:
case 400:
return "Bad request"
case 404:
return "Not found"
case 418:
return "I'm a teapot"
case _:
return "Something's wrong with the internet"
- 타입 명시가 아래와 같은 방법으로도 가능해 집니다. (X|Y)
def square(number: int | float) -> int | float:
return number ** 2
Python 3.11
CPython 3.11 is an average of 25% faster than CPython 3.10 as measured with the pyperformance benchmark suite, when compiled with GCC on Ubuntu Linux. Depending on your workload, the overall speedup could be 10-60%.
- Python Document
- 숙원사업이었던 Cpython 성능개선이 이루어졌습니다. 3.10에 비해서 25%정도 더 빨라졌습니다!
- 파이썬 함수를 호출할때 생성되는 Python frame에 대해서 메모리 사용 측면에서 최적화가 이루어 졌습니다.
- Exception Groups이라는 기능이 생겼습니다. 기존 인터프리터는 여러개의 오류를 한번에 다룰 수 없었습니다만(좀 뻘짓을 해서 가능은 했습니다) 이제 공식적으로 가능해졌습니다.
>>> eg = ExceptionGroup(
... "one",
... [
... TypeError(1),
... ExceptionGroup(
... "two",
... [TypeError(2), ValueError(3)]
... ),
... ExceptionGroup(
... "three",
... [OSError(4)]
... )
... ]
... )
>>> import traceback
>>> traceback.print_exception(eg)
| ExceptionGroup: one (3 sub-exceptions)
+-+---------------- 1 ----------------
| TypeError: 1
+---------------- 2 ----------------
| ExceptionGroup: two (2 sub-exceptions)
+-+---------------- 1 ----------------
| TypeError: 2
+---------------- 2 ----------------
| ValueError: 3
+------------------------------------
+---------------- 3 ----------------
| ExceptionGroup: three (1 sub-exception)
+-+---------------- 1 ----------------
| OSError: 4
+------------------------------------
>>> type_errors = eg.subgroup(lambda e: isinstance(e, TypeError))
>>> traceback.print_exception(type_errors)
| ExceptionGroup: one (2 sub-exceptions)
+-+---------------- 1 ----------------
| TypeError: 1
+---------------- 2 ----------------
| ExceptionGroup: two (1 sub-exception)
+-+---------------- 1 ----------------
| TypeError: 2
+------------------------------------
>>>
- aifc, chunk, audioop, crypt, nis, uu, spwd와 같은 기존 모듈들에 대한 지원이 중단됩니다.
Python 3.12
def max[T](args: Iterable[T]) -> T:
...
class list[T]:
def __getitem__(self, index: int, /) -> T:
...
def append(self, element: T) -> None:
...
- type문법이 들어왔습니다. 쉽게 말해서 generic classes가 도입됬다고 보시면 됩니다.
- 뭔가 좀 껄끄러웠던 문자열 포맷팅이 좀 개선됬습니다. 자세한 내용은 PEP 701을 참조하도록 합시다...
- CPython 모니터링용 API가 생겼습니다.
- **kwargs에 대한 타이핑이 더 정확하게 가능해졌습니다. 자세한 내용은 PEP 692를 참조하도록 합시다...
Python 3.13
- Global Interpreter Lock(스레드는 많아도 계산은 한명씩 줄서서)이 일부 꺼질 수 있게 지원합니다.
적폐청산실험적 기능이고 기본은 아닙니다만, 뭔가 엄청난 짓을 할수 있어 보입니다. 물론 기존과의 호환성은.. - 실험적으로 Cpython에 JIT Compiler가 도입되었습니다. (사실은 24년 초에 이미 슬쩍 넣어두긴 했음) 물론 그렇다고 확실하게 더 빨라지고 그런건 아닌긴 한데, 여러분이 그냥 end단 프로그래머면 신경 끄셔도 됩니다. (대놓고 How to teach statement에 써져 있음)
Python 3.14
- 클래스, 함수, 모듈들에 대한 어노테이션이 더이상 값으로 평가되지 않습니다(Deferred evaluation). 이는 성능을 향상시키기 위해서라는데.. 정 필요하면 annotationlib이라는 module을 받아서 쓰랍니다. 근데 왜?
- Standard Library에서 여러개의 Cpython Runtime을 돌리기가 편해졌습니다! 예전에는 C단 API에서만 됬다면, 이제는 concurrent.interpreters 모듈을 통해서도 가능합니다.
- PEP750에 따라서 Custom String Processing을 위한 Template string을 도입했습니다. f스트링이랑 문법은 뭐 딱히 달라진건 없습니다만, 대충 String을 담는 거시기한게 하나 더 생겼다고 보시면 됩니다. 자세한건 구글에 t-string을 쳐봅시다.\
Ref : Python Official Documentation, What's new in Python 3.x?
'Computer Science > Python' 카테고리의 다른 글
| 온라인 커뮤니티상의 인기글 제목의 특징 (2) | 2025.07.01 |
|---|