이름이 바다코끼리 연산자인 이유는 생긴게 바다코끼리 닮아서.
:=
닮았쥬?
정식 이름은 대입 표현식(Assignment Expression) 인데, 쉽게 말하자면 특별한 구문 안에서 변수를 대입하는 연산자임.
다른 언어들 새로운 연산자 팍팍 도입하는 동안 커두새끼 혼자 "직관적이지 않음" 지랄틀면서 끝까지 안넣어주던 연산자인데
파이썬 3.8에 드!디!어! 넣어줬다고 한다. 2019년 10월에 넣어준거라 아직도 모르는 사람이 많은듯.
코드 예제:
a = [1, 2, 3, 4]
n = len(a)
if n > 5:
print(f"리스트의 길이가 5를 넘습니다. 현재 리스트 길이: {n}")
이랬던 코드가
a = [1, 2, 3, 4]
if (n := len(a)) > 5:
print(f"리스트의 길이가 5를 넘습니다. 현재 리스트 길이: {n}")
이렇게 바뀐다고 보면 된다.
while 문에 사용하면 for in + 제너레이터를 쓰는 것보다 가독성이 더 좋아진다.
while line := file.readline():
process(line)
내가 제일 좋아하는 사용방법은 리스트 생성에 사용하는 거임
y = f(x)
mylist = [y, y+1, y+2]
이 코드를
mylist = [y := f(x), y+1, y+2]
이렇게 바꿔버릴 수 있음. 존나 짱임.
그냥 =으로 하면 안 되었던 거임?
ㅇㅇ 안됨. 파이썬에서 일반적인 대입 연산자는 값을 반환하지 않음
print(a=1) 이라고 하면 "print 함수에는 a라는 매개변수가 없는데요?" 라는 에러를 냄. print(a:=1) 이라고 하면 1을 출력함.
print("안녕", end=(string:="하세요")) 를 실행하면 "안녕하세요" 를 출력하고, string 이라는 변수에 "하세요" 를 저장해줘.
그냥 =의 기능을 변경하면 되는 거 아님?
그럼 속도가 팍팍 느려지잖아요....
마지막에 저거 리스트 원소들 계산순서가 left to right로 됨?
ㅖ
깃랩 CI/CD 환경을 파이썬 3.6 에 고정되어서 난 쓸일이 없구낭... 일단 소개 고마워요~!!!
귀두 개새끼
루비 기본 = 동작에서 값 반환하는데 파이썬은 저거 안됐나보네 ㅋㅋㅋ
파이썬 제외 대부분의 언어는 대입연산자가 값을 반환함 C계보들도
C도 =은 값을 반환한다
바다코끼리라고 알려주니깐 자꾸 의식하게되네 ㅋㅋㅋ
해당 댓글은 삭제되었습니다.
앞으로 그럴땐 while 문에 바다코끼리 연산자를 써주면 된다 이거야
사족이지만 그런 상황에선 리스트 컴프리헨션이 아니라 제너레이터 컴프리헨션을 써야함
[] 대괄호 대신 () 소괄호로 감싸주면 제너레이터를 반환하는 제너레이터 컴프리헨션이 됨
처음 봤는데 동작이 기묘하면서도 신기하다
시무라 아주머니 연산자 - dc App
호바밧
이거 다들 반대했는데 커두 혼자 넣어달라고 땡깡부리다가 결국 들어간 거임
헐 내가 알고있는거랑 반대였네
그건 이번에 추가된 match아님?
자매품으로 elvis operator가 있습니다 ?:
이거 R로 치면 <-이랑 =의 차이인가?
간단히 말해서 대입하고 자기자신을 return하는 거지 - dc App