본문 바로가기

Python 3.9 변경사항 간단 정리

기술적인 이야기/기타 개발 2020. 10. 6.
반응형

파이썬(Python) 3.9 버전이 공식 릴리즈 되었기에 이에 관해 간단히 살펴보는 글입니다. 다만 이 글은 문법적으로 변경되는 사항만 정리합니다. 파서가 바뀌는 등의 변화는 저 같은 사람에겐 체감이 잘 안 되기도 하니깐요.

사전형 합치기 및 수정 연산자 추가

사전형(dict)끼리 합치기를 지원하는 | 오퍼레이터가 추가되었습니다.

>>> {'a': 1, 'b': 2} | {'c': 3, 'd': 4}
{'a': 1, 'b': 2, 'c': 3, 'd': 4}

합쳐질 때 중복되는 키는 업데이트 되는 형태 같습니다. 따라서 아래와 같이 |= 오퍼레이터를 이용해 사전형의 값을 업데이트 할 수도 있습니다.

>>> d = {'a': 111, 'b': 2}
>>> d |= {'a': 1, 'c': 3}
>>> d
{'a': 1, 'b': 2, 'c': 3}

어려울 것 없이 d |= d2 명령은 d = d | d2의 의미입니다.

상세한 내용은 PEP-584를 참고합시다.

문자열 머릿글자 혹은 꼬릿글자 삭제 기능 추가

str 타입에 removeprefixremovesuffix가 추가되었습니다.

>>> 'some string'.removeprefix('some ')
'string'
>>> 'some string'.removesuffix(' string')
'some'
>>> 'some string'.removeprefix('not exists')
'some string'

일치하는 머릿글자나 꼬리글자가 없으면 삭제하지 않고 원본을 그대로 돌려줍니다. 이런 게 있었으면 할 때가 종종 있었는데 기분 좋은(?) 업데이트네요.

상세한 내용은 PEP-616를 참고합시다.

리스트와 사전형 타입 힌트 내장 지원

기존에는 __future__ 모듈의 annotations를 임포트하지 않으면 리스트나 사전형의 타입 힌트를 쓸 수 없었습니다만, 드디어 3.9부터는 별도의 import 없이 아래와 같이 listdict 타입 힌트를 주는 코드를 작성할 수 있게 되었습니다.

def greet_all(names: list[str]) -> None:
    for name in names:
        print("Hello", name)

강타입 언어가 되기엔 아직 무리이긴 하지만 타입 체크 지원도 점점 발전하고 있는 게 느껴지네요.

상세한 내용은 PEP-585를 참고합시다.

타입 힌트에 관한 내용은 아래 글을 살펴봅시다.

 

Python 3 정적 타이핑 소개 및 소감(?)

파이썬은 동적 타이핑 언어입니다. 쉽게 말해서, 하나의 변수가 타입에 구애받지 않는 데이터를 가리킬 수 있습니다. 그래서 동적 타이핑은 쉽고 간결한 코드를 만들 수 있기도 합니다. 하지만 �

seorenn.tistory.com

기타

주요 변화는 이 정도로 마무리합니다. 이외에도 모듈이 추가되거나 강화되는 등의 변화들이 많습니다. 아래 링크에서 원문을 보실 수 있으니 참고하시기 바랍니다.

 

What’s New In Python 3.9 — Python 3.9.0 documentation

What’s New In Python 3.9 Release 3.9.0 Date October 06, 2020 Editor Łukasz Langa This article explains the new features in Python 3.9, compared to 3.8. Python 3.9 was released on October 5th, 2020. For full details, see the changelog. See also PEP 596 -

docs.python.org

여담이지만 언어들끼리 좋은 점을 벤치마킹 하다보니 여러 언어들이 점점 닮아가고 있다고 느껴지네요. Lisp 같은 변태스런 언어들을 빼면 미래의 언어들은 다 비슷비슷해질 것 같다는 생각이 들었습니다.

728x90
반응형

댓글