개요
이 글은 파이썬 3.10 버전의 새로운 변경사항을 소개합니다.
Python 3.10 배포 주요 사항
파이썬 3.10 버전은 2021년 10월 4일에 릴리즈되었습니다.
새로운 기능 (New Features)
PEP 626: Precise line numbers for debugging and other tools.
PEP 626은 디버깅, 프로파일링 커버리지 도구 등을 위해 더 정확하고 신뢰할 수 있는 코드 라인번호를 제공하기 위한 것입니다.
정확한 라인 번호를 가진 추적 이벤트는 실행되는 모든 라인의 코드에 대해 생성되고 실행되는 라인의 코드에 대해서만 생성됩니다.
프레임 객체의 f_lineno 속성은 라인 번호를 포함합니다.
코드 객체 (code objects)의 co_lnotab 속성은 이제 deprecated 되었고, 3.12 버전에서 제거될 예정입니다.
오프셋에서 라인 번호로 변환되어야할 필요가있는 코드는 이제 새로운 co_lines() 함수를 사용해야합니다.
PEP 634: Structural Pattern Matching
파이썬 3.10부터는 패턴 매칭을 지원합니다.
# 패턴매칭은 match 키워드로 시작하고 case로 패턴을 지정합니다.
match subject:
case <pattern_1>:
<action_1>
case <pattern_2>:
<action_2>
case <pattern_3>:
<action_3>
case _:
<action_wildcard>타입 힌트와 관련된 새로운 기능들
PEP 604: New Type Union Operator
유니언 연산을 나타내기 위한 새로운 연산자 X | Y 가 도입되었습니다.
이 연산자는 type X 또는 type Y를 나타내기 위해 typing.Union을 사용하는 방법보다 더 깔끔한 방식을 제공합니다.
이전 버전의 파이썬에서는, 여러 타입을 받는 인자를 정의할 때, typing.Union을 사용하여 타입을 지정해야 했습니다.
def square(number: Union[int, float]) -> Union[int, float]:
return number ** 2타입 힌트는 이제 더 간결한 방식으로 작성할 수 있습니다.
def square(number: int | float) -> int | float:
return number ** 2새로운 유니언 연산자는 또한 isinstance() 혹은 issubclass()의 두번 째 인자로 사용할 수 있습니다.
>>> isinstance(1, int | str)