Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 파이썬
- 유데미
- freezeD
- riverpod
- 다트
- dart
- 유데미 러닝크루
- 코딩
- vscode
- 리버팟
- 개발자
- linux
- 리눅스
- 명령어
- Code Generation
- 개발
- ExpansionTile
- 책
- ListTile
- python
- 맥
- 도서
- 가상환경
- 유데미 코리아
- 플러터
- 프로그래밍
- flutter
- command
- 디자인패턴
- copyWIth
Archives
- Today
- Total
승상의 코딩 블로그
파이썬 - 왈러스 연산자(Walrus Operator) := 본문
Walrus Operator 가 파이썬 3.8부터 추가되었다. Walrus Operator는 ":="를 통해 사용할 수 있습니다.
Walrus(바다코끼리)에서 알 수 있듯이, 바다코끼리의 눈과 이빨이 연산자와 비슷하게 생겼습니다.
왈러스 연산자(Walrus Operator)
왈러스 연산자(Walrus Operator)는 표현식에서 변수에 값을 할당할 수 있게 해 줍니다.
- 리스트, 딕셔너리, 함수 호출 등은 expression(표현식)이라고 한다. 표현식은 값을 가지는 것이라고 생각하면 됩니다.
- 이전에는 표현식에 값을 할당할 수 없습니다.
왈러스 연산자는 코드를 간결하게 만들어줍니다.
기존에는 연산의 결과를 저장하는 부분과 사용하는 부분이 분리되어 있다 보니, 불필요해 보이는 코드의 양이 많아 보입니다. (복잡도는 증가하고 가독성은 떨어지게 됩니다.)
다음의 예시를 통해 자세히 알아보겠습니다.
기본 예시
왈러스 연산자의 사용 전후의 코드는 아래의 예시를 참고하면 됩니다.
### walrus 연산자 미사용시
n = len(a)
if n > 10:
print(f"List is too long ({n} elements, expected <= 10)")
### walrus 연산자 사용시
if (n := len(a)) > 10:
print(f"List is too long ({n} elements, expected <= 10)")
코드 한 조각으로 보면 아주 작은 개선이지만, 이러한 개선이 여러 번 반복되기 시작하면 큰 영향을 주게 됩니다.
While 예시
While 문에서도 이점이 있습니다. 예를 들어, 파일을 계속해서 읽는 경우, while 문의 조건문을 왈러스 연산자가 사용하여 더욱 조건을 명확히 보이게 할 수 있습니다.
# walrus 연산자 적용 전
while (True):
block = f.read(256)
if block == '':
break
process(block)
# walrus 연산자 적용 후
while (block := f.read(256)) != '':
process(block)
딕셔너리 예시
딕셔너리에서도 사용할 수 있습니다. 딕셔너리에서는 주의할 점이 있습니다.
딕셔너리 key 와 value 를 구분할 때, 왈러스 연산자에도 포함된 ":" 를 사용합니다. 그러므로 딕셔너리와 왈러스 연산자의 충돌을 피하기 위해 왈러스 연산자 표현식에 괄호를 사용해 줍니다.
### walrus 연산자 적용 전
country = 'korea'
city = 'seoul'
profile = {
"country" : country,
"city" : city
}
### walrus 연산자 적용 후
profile = {
"country" : (country:='korea'),
"city" : (city:='seoul')
}
반응형
'Python (파이썬)' 카테고리의 다른 글
self 의 역할 (함수의 메모리) (0) | 2023.01.23 |
---|---|
파이썬 - dataclass(데이터클래스) (0) | 2022.12.31 |
파이썬 - Type Hint(or Type Annotation) 를 사용하는 이유 (2) | 2022.12.25 |
파이썬 - Enum (0) | 2022.12.22 |
파이썬에서 가상환경 사용하기 (venv 사용) (0) | 2022.09.15 |
Comments