-
[Python] 바다코끼리 연산자? := (the walrus operator)프로그래밍 언어/Python 2022. 6. 24. 09:53
서론
코딩테스트 공부 초반에는 모두 아는 것만 나왔는데... 요즘 파이썬의 다양한 기능에 놀라고 있다.
그런데 이건 C 개발자로서 "이게 파이썬 3.8이 되어서야 생겼다고??" 싶은 기능이다.
Python 3.8에 새로 도입된 연산자 :=에 대해 알아보자.
해당 연산자가 바다코끼리를 닮았다고 해서 the walrus operator, 바다코끼리 연산자라고 한다.
관련 파이썬 Document는 여기있다.
(2022.06.27) 조금 더 상세한 코드 설명 추가
목차
1. 바다 코끼리 연산자(the walrus operator) :=
파이썬은 지금까지 조건문에서라든지, 필요할 때 바로 변수를 만들어 값을 대입해서 쓰지 못했다.
예를 들어 C에서는 다음과 같은 표현이 가능하다.
if((int value = some_function()) < some_value) { printf("%d\n", value); } value에 some_function()의 결과값을 집어넣고, value값과 some_value 값을 비교하는 것이다.
이 모든 것이 if 조건절 안에서 이뤄질 수 있었다.
그런데 파이썬은 3.8 버전이 나오기 전까지 아래와 같이 써야만 했다.
value = some_function() if value < some_value: print(value) 위의 C코드를 파이썬에 적당히 대충 사용하려고 아래처럼 쓰면 에러가 발생한다.
if (value = some_function()) < some_value: print(value) # SyntaxError: invalid syntax 이 불편함은 파이썬 3.8 버전의 바다코끼리 연산자 :=가 추가되면서 해결되었다.
:= 는 값을 변수에 대입하면서 동시에 사용할 수 있게 만들어준다.
위의 에러 코드에서 value 값을 대입하는 부분을 바다코끼리 연산자 := 로 바꿔주기만 하면 에러 없이 잘 실행된다.
if (value := some_function()) < some_value: print(value) 이건 맨 처음 C코드와 같은 의미를 지닌 코드이다.
바다코끼리 연산자 :=를 사용할 때는 코드의 의미가 모호해질 수 있으므로 괄호를 통해 명확히 하는 것이 좋다.
참고문헌
https://docs.python.org/ko/3/whatsnew/3.8.html
https://int-i.github.io/python/2020-05-29/python-walrus-operator/
개인적인 자료 정리이기 때문에 잘못된 부분이 있다면 지적해주시면 감사하겠습니다.
'프로그래밍 언어 > Python' 카테고리의 다른 글
[Python] for-else / while-else 문이란? (0) 2022.06.23 [Python] 언패킹(unpacking) 연산자 * (0) 2022.06.23 [Python] 내장 함수 정리 (0) 2022.04.05 [Python] 알고리즘 관련 라이브러리 및 주요 함수 정리 (0) 2021.10.21