Python 3.8 기능을 알아보자!

Posted by on December 22, 2019 · 3 mins read

Python 3.8이 배포된지 벌써 2달이 지났다. 조금 늦었지만 주요 Feature들을 정리해 보겠다!

Assignment expressions

필자는 할당식으로 해석하였다. (이 표현식은 한국말로 바다 코끼리 라는 표현식으로도 사용할 수 있다!)

3.8 이전 버전

sample = [
    {'name': 'kuckjwi'},
    {'name': 'devkang'},
    {'name': None},
]

for s in sample:
    name = s.get('name')
    if name:
        print(f'{name}')

3.8 버전

sample = [
    {'name': 'kuckjwi'},
    {'name': 'devkang'},
    {'name': None},
]

for s in sample:
    if name := s.get('name'):
        print(f'{name}')

위와같이 Python 3.8버전 부터는 할당식을 통하여 코드를 좀 더 간결하게 표현 할 수 있다!


Positional-only parameters

Python을 하다보면 너무 자유로워서 아래와 같은 함수 호출도 허용이 된다.

3.8 버전 이전

def pow(x, y, z):
    r = x**y
    if z is not None:
        r %= z
    return r


pow(y=10, x=5, z=2)

이러한 애매모한 함수 파라미터들을 Positional-only parameters 기능을 통하여 아래와 같이 변환 할 수 있다.

3.8 버전

def pow(x, y, z, /):
    r = x**y
    if z is not None:
        r %= z
    return r


pow(5, 1, 2)

아주 편~안해진것 같다.


F-string debugging support

Format string 으로 디버깅을 한다니 무슨소리지! 하고 직접 써보았다.

x = 3
print(f'{x+1}') # 4
print(f'{x+1=}') # x+1=4

이 기능은 Format string에 계산될 식이 들어갈 때 사전에 디버그 해볼 수 있어서 굉장히 유용할 것 같다!

감사합니다 :)