Python Assignment Expressions(PEP 572)

송승관·2020년 5월 27일
0

🆕 Assignment Expressions(PEP 572)

python 3.8에서 Assignment Expressions(PEP 572) 이라는 기능이 추가되었다.

Walrus Operator 라고도 불리는 이 기능은 조건문이나 수식에서 변수에 값을 대입시킬 때 사용할 수 있다.

Block Scope 내에서 변수를 할당하여 사용하고 싶을 때 유용하다.

Walrus Operator 사용 전

Walrus Operator을 사용하지 않은 파이썬 코드에서는 변수를 먼저 할당한 다음에 수식에 변수를 사용한다.

chat = input("아무 말이나 입력하세요!: ")
while chat != "싫어":
    print(chat)
    command = input("아무 말이나 입력하세요!: ")

Walrus Operator 사용 후

하지만 Walrus Operator를 사용하게 되면 변수를 수식 내에서 할당하여 사용할 수 있어 간결하게(파이써닉하게) 사용할 수 있다.

while (chat := input("아무 말이나 입력하세요!: ")) != "싫어": print(chat)

List Comprehensions

리스트를 특정 조건을 사용해 생성할 수 있는 List Compomprehension에서 사용할 수 있다.

# Walrus Operator 사용 전
stuff = [(lambda y: [y,x/y])(f(x)) for x in range(5)]
# Walrus Operator 사용 후
stuff = [[y := f(x), x/y] for x in range(5)]

🤔 총평

Walrus Operator 를 사용해서 기존에 간결하게 짜던 코드를 더 간결하게 짤 수 있게 되었다. 하지만 나만 코드를 이해하면 되는 게 아니라 다른 사람들도 코드를 이해해야 하기 때문에 남용은 자제해야 할 필요가 있다. 하지만 Scope Value를 추가할 때 불필요한 변수를 선언하여 코드수를 늘리는 것 보다는 Walrus Operator 를 사용해서 직관적으로 변수를 바꾸거나 추가하는 것이 좋다 생각한다.

언제나 그렇듯 과유불급이다.

👇 읽어보기

profile
Data Engineer, 변화를 두려워하지 않는 개발자입니다.

0개의 댓글