[ Python ] Walrus ( := ) 연산자

·2023년 4월 19일
0

[ Python ]

목록 보기
15/19

Walrus ( 바다코끼리 ) 연산자

📌 개념

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
profile
https://dribbble.com/ohseyun

0개의 댓글