파이썬(Python) 3.8 릴리스와 주요 변경 사항
할당표현식, 위치 한정 파라미터, f-문자열 평가식 지원
이 글에서는 파이썬 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 - 위치 고정 파라미터는 메서드나 함수의 특정 위치에서 정해진 파라미터만 받는 기능입니다. 함수 정의 부분에 위치 고정 파라미터를 선언하고 /
기호를 넣는 방식입니다.
다음 함수의 정의 부분에 /
기호를 추가했는데요. 여기서 a
와 b
는 위치 지고 파라미터, c
, d
는 위치 혹은 키워드 파라미터, e
, f
는 키워드 파라미터가 됩니다.
따라서, f
함수를 이런 식으로는 호출할 수 있지만,
이런 식으로는 호출할 수 없습니다.
f(10, b=20, c=30, d=40, e=50, f=60) # b는 키워드 전달인자가 될 수 없습니다.
f(10, 20, 30, 40, 50, f=60) # e는 키워드 전달인자여야 합니다.
이를 통해 라이브러리 제작자들이 라이브러리를 좀더 견고하게 만들 수 있고 언어의 일관성도 향상될 것으로 기대한다고 하네요.
f-문자열에서 평가식self-documenting expressions을 위한 =
기호 추가
다양한 문자열을 조합할 때 f-string이 굉장히 유용한데요. f-string 안에 변수 이름과 변수 출력 부분을 넣으려면 다음과 같이 중복이 발생하곤 했습니다.
파이썬 3.8에서는 이러한 중복을 줄일 수 있습니다. f-string의 표현식 내부에 =
기호를 사용하면 앞의 코드를 이렇게 바꿀 수 있습니다.
숫자 포맷 등도 지정할 수 있습니다.
pi = 3.141592
print(f'{pi = :.3f}') # pi = 3.141
love_as = 3000
print(f'{love_as = :,d}') # love_as = 3,000
이 외에 다른 변경 사항은 What’s New In Python 3.8 — Python 3.8.0 문서를 참고하시면 됩니다.