파이썬의 바다코끼리 연산자(walrus operator)에 대해 알아봅시다. 사실 자주 보이는 문법은 아니지만 한번씩 보이는 문법이라 알고넘어 가는게 좋겠습니다. 또한 코드 가독성 좋은 코드를 작성할때 도움이 됩니다.
이 연산자는 Python 3.8에서 도입되었습니다. 바다코끼리 연산자는 :=로 표현되며, 할당 표현식(assignment expression)이라고도 불립니다. 이 연산자의 주요 기능은 표현식 내에서 변수에 값을 할당하고 동시에 그 값을 사용할 수 있게 해주는 것입니다.
간단한 예제를 통해 살펴보겠습니다:
# 바다코끼리 연산자 사용 예
if (n := len(myList)) > 10:
print(f"리스트가 너무 깁니다. 길이: {n}")
이 코드에서 n := len(myList)는 myList의 길이를 계산하여 n에 할당하고, 동시에 그 값을 if 문의 조건으로 사용합니다.
문자열이 뒤집어도 같은지 확인하는 함수를 예로 들어보겠습니다.
Before.
def isPalindrome(s):
return s == s[::-1]
※ 참고: Python에서 [::-1]은 시퀀스(여기서는 문자열)를 역순으로 만드는 슬라이싱 문법입니다.
위의 함수를 바다코끼리 연산자를 써서 사용하면 아래처럼 됩니다.
After.
def isPalindrome(s):
return (rev := s[::-1]) == s
위의 예시만 보면 그냥 s == s[::-1] 쓰면되지 왜 굳이 사용해야되지? 생각이 듭니다.
다음의 예시로 바다코끼리 연산자가 어떻게 가독성을 높일 수 있는지 보여드리겠습니다.
skill을 쓰는 함수 입니다. 여기서 주목할것은 fireSkill을 선언하고 if문으로 값이 있는지 확인합니다.
Before.
def useSkill(skills):
fireSkill = skills['fireball']
if fireSkill :
return fireSkill if fireSkill > 200 else skills['iceball']
return "cooltime"
After.
def useSkill(skills):
if (fireSkill := skills['fireball']) :
return fireSkill if fireSkill > 200 else skills['iceball']
return "cooltime"
바다코끼리 연산자를 사용함으로서 fireSkill을 먼저 선언할 필요가 없어졌습니다.
이런식으로 코드 한줄씩 줄이고 가독성을 높일수도 있겠습니다.