파이썬 3.8 부터 사용 가능한 바다 코끼리 연산자 “:=” 조건문 안에서는 값 인가하는 기능을 C에서는 원래 지원했던거고 python에서는 이 모호함 떄문에, if 조건안에서, 값의 assign을 허용하지 않는데, ( 실수로 == 를 =로 사용한 경우, 나중에 디버깅하기가 어려움 ) python에서는 이 불편함을 호소한 사람들이 여럿있었는지 “:=” 연산자로 3.8에서 추가가 되었다
형식은 다음과 같다
이름 := 표현식
len을 여러군데 사용하는 경우
a = ['apple', 'orange', 'banana', 'mango']
n = len(a)
if n > 5:
print(f"List is too long ({n} elements, expected <= 5)")
a = ['apple', 'orange', 'banana', 'mango']
if (n:= len(a)) > 5:
print(f"List is too long ({n} elements, expected <= 5)")
파일 처리
# 128byte씩 read
while True:
chunk = file.read(128)
if chunk:
break
doit(chunk)
while chunk := file.read(128)
doit(chunk)
List안에서의 사용
위의 예시로 든 파일 Access등은 with 구문들로 사용하면 큰 불편함은 이전에도 없었고 이게 보통 정규식에서 match 사용할때, 이게 있었으면 좋겠다는 생각을 한적이 있었는데, 다행히도 3.8에서 이 구문을 추가해 주었다.
if match := re.match(aaa, line):
return match.group(1)
이 문법은 여러줄 쓸 것을 한줄로 축약해주므로, 코드를 simple하게 유지하는데 유리하다. 개인적인 생각은 이런 syntax sugar의 경우, 잘 사용하면 적절하나, 코드수를 무조건 줄인다고, 남용하면 오히려 가독성에는 독이 되는 경우 들이 있으니, 상황에 맞게 잘 사용하는게 중요하다.