Python 3.8 부터 도입된 연산자로
표현식의 결과를 변수에 할당하고, 동시에 반환한다.
즉, Walrus 연산자는 '할당' 과 '반환' 을 동시에 실행 한다.
변수 := 표현식
➡️ 변수 ( + 표현식 ) := 표현식 ( + return )
price = int(input('Enter price: '))
print('real_price: ', real_price := round( price * 1.1234, 3 ))
>>> Enter price: 7
>>> real_price: 7.864
할당과 반환을 동시에 실행해, 코드량이 줄어들면서
가독성이 높아지는 효과를 볼 수 있다.
📒 기초 문제
✅ s 에 문자열(string)을 할당하고,
✅ 'walrus' in s 를 result 에 할당하고,
✅ result 가 True 라면 할당값 출력
1️⃣ 일반 코드
s = 'walrus eat kimchi' ## s에 문자열(string) 할당
result = 'walrus' in s ## 'walrus' in s를 result에 할당
if result: ## result가 True 라면
print(s) ## s 출력
print(result) ## result 출력
>>> walrus eat kimchi
>>> True
2️⃣ := 사용
if result := 'walrus' in (s := 'walrus eat kimchi'):
print(s) ## s 출력
print(result) ## result 출력
>>> walrus eat kimchi
>>> True
📕 활용 문제
✅ 리스트에 range(10)을 사용하여 0부터 9까지의 수를 대입
✅ 시작 값 0을 start에 할당, 마지막 값 9를 end에 할당
1️⃣ 일반 코드
li = [] ## 빈리스트 생성
for i in range(10):
if i == 0:
start = i ## start에 초기값 할당
if i == 9:
end = i ## end에 마지막값 할당
li.append(i) ## 차례대로 리스트에 삽입
print(li) ## 리스트 출력
print(start,end) ## start, end 출력
>>> [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
>>> 0 9
2️⃣ := 사용
li = [(end := i) if i else (start := i) for i in range(10)]
print(li) ## 리스트 출력
print(start, end) ## start, end 출력
>>> [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
>>> 0 9