python 3.8
에서 Assignment Expressions(PEP 572)
이라는 기능이 추가되었다.
Walrus Operator
라고도 불리는 이 기능은 조건문이나 수식에서 변수에 값을 대입시킬 때 사용할 수 있다.
Block Scope 내에서 변수를 할당하여 사용하고 싶을 때 유용하다.
Walrus Operator
을 사용하지 않은 파이썬 코드에서는 변수를 먼저 할당한 다음에 수식에 변수를 사용한다.
chat = input("아무 말이나 입력하세요!: ")
while chat != "싫어":
print(chat)
command = input("아무 말이나 입력하세요!: ")
하지만 Walrus Operator
를 사용하게 되면 변수를 수식 내에서 할당하여 사용할 수 있어 간결하게(파이써닉하게) 사용할 수 있다.
while (chat := input("아무 말이나 입력하세요!: ")) != "싫어": print(chat)
리스트를 특정 조건을 사용해 생성할 수 있는 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
를 사용해서 직관적으로 변수를 바꾸거나 추가하는 것이 좋다 생각한다.
언제나 그렇듯 과유불급이다.