파이썬 3.10의 새로운 변경사항

2023년 06월 24일

python

# 파이썬# 3.10

개요

이 글은 파이썬 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)
© 2025, 미나리와 함께 만들었음