이 글에서는 파이썬 3.8에 추가된 기능과 바뀐 점을 알아보려 합니다. What’s New In Python 3.8 — Python 3.8.0 문서를 참고하였습니다. 주의! 개인적으로 판단하기에 사소한 사항들은 번역하지 않았고, 릴리스 노트만으로 이해하기가 어려운 기능엔 설명을 조금 보태었습니다.

사용자 입장에서 주목할 만한 부분은 다음과 같습니다.

  • 할당 표현식assignment expressions
  • 위치 한정 파라미터positional-only parameter
  • f-문자열에서 평가식self-documenting expressions 사용 가능

할당 표현식assignment expressions

한때 논란의 중심에 있던 PEP 572 - 할당 표현식이 드디어 추가되었습니다. 개념을 이해하기 위해 예시를 살펴보죠.

while 문 예시 다음은 while 반복문에서는 흔히 나타나는 코드입니다.

할당 표현식을 사용하면 다음과 같이 간단해 집니다.

if 문 예시 if 문 역시 간단해 집니다. 다음 코드의 2~3행을,

할당 표현식을 사용하여 한 줄로 줄일 수 있습니다.

리스트 캄프리헨션 예시 다음과 같은 리스트 캄프리헨션 코드에도,

할당 표현식을 적용할 수 있습니다.

PEP 572의 제목은 할당 표현식이지만, 이전에는 바다코끼리 연산자the walrus operator로 널리 알려졌고, CPython 내부적으로는 이름 붙은 표현식named expressions이라는 용어를 사용합니다.

위치 고정 파라미터positional-only parameter

PEP 570 - 위치 고정 파라미터는 메서드나 함수의 특정 위치에서 정해진 파라미터만 받는 기능입니다. 함수 정의 부분에 위치 고정 파라미터를 선언하고 / 기호를 넣는 방식입니다.

다음 함수의 정의 부분에 / 기호를 추가했는데요. 여기서 ab는 위치 지고 파라미터, c, d는 위치 혹은 키워드 파라미터, e, f는 키워드 파라미터가 됩니다.

따라서, f 함수를 이런 식으로는 호출할 수 있지만,

이런 식으로는 호출할 수 없습니다.

이를 통해 라이브러리 제작자들이 라이브러리를 좀더 견고하게 만들 수 있고 언어의 일관성도 향상될 것으로 기대한다고 하네요.

f-문자열에서 평가식self-documenting expressions을 위한 = 기호 추가

다양한 문자열을 조합할 때 f-string이 굉장히 유용한데요. f-string 안에 변수 이름과 변수 출력 부분을 넣으려면 다음과 같이 중복이 발생하곤 했습니다.

파이썬 3.8에서는 이러한 중복을 줄일 수 있습니다. f-string의 표현식 내부에 = 기호를 사용하면 앞의 코드를 이렇게 바꿀 수 있습니다.

숫자 포맷 등도 지정할 수 있습니다.

이 외에 다른 변경 사항은 What’s New In Python 3.8 — Python 3.8.0 문서를 참고하시면 됩니다.