본문 바로가기
Language/Python

[Python] 바다코끼리 연산자 Walrus Operator 알아보기 | LIM

by forestlim 2024. 6. 21.
728x90
반응형

Python3.8 부터 바다코끼리 연산자가 도입되었다고 한다. 

이걸 어떻게 알았냐면 LLM Chatbot 만들면서 화면 만들 때 streamlit 쓰다가 알게 되었다. 

# Accept user input
if prompt := st.chat_input("What is up?"):
    # Display user message in chat message container
    with st.chat_message("user"):
        st.markdown(prompt)
    # Add user message to chat history
    st.session_state.messages.append({"role": "user", "content": prompt})

 

위 코드였는데 처음에는 이렇게 생긴 코드인 줄 알았다.

# Accept user input
if prompt : st.chat_input("What is up?"):
    # Display user message in chat message container
    with st.chat_message("user"):
        st.markdown(prompt)
    # Add user message to chat history
    st.session_state.messages.append({"role": "user", "content": prompt})

 

그냥 단순 if 문인 지 알았지 뭐야,,

아무 생각 없이 베껴쓰다가 prompt 가 선언되지 않았다고 에러가 떠서

 

예시 코드에 왜 prompt 변수 선언한 걸 안 써놓은거야 정말..?

 

이러면서 혼자 궁시렁대고 있었다.

 

그래서 눈을 비비고 다시 봤더니..! 단순 콜론이 아니고 콜론 옆에 등호가 붙어 있어서 

 

음...?

 

파이썬이 맞는데..? 이러고 있었다

 

그래서 코드를 베껴쓰지 않고 그대로 복붙했더니..! 제대로 동작했다

 

 

 

이제부터 이 귀엽게 생긴 := 연산자에 대해 알아보고 정리한 걸 공유하려고 한다.

 

1. 개념

변수 := 표현식

 

표현식의 결과를 변수에 할당하고, 동시에 반환한다.

 

즉 기존에 아래처럼 작성하던 코드를 

prompt = st.chat_input("What is up?")
if prompt:

 

요렇게 한 줄로 작성 가능하게 된 것이다.

if prompt := st.chat_input("What is up?")

 

 

2. 사용 이유

위의 예시처럼 할당과 동시에 반환하는 구조로 코드량을 줄일 수 있게 된다. 

코드량이 줄어드니 가독성도 더 좋아지는 효과를 가져올 수 있다. 

 

3. 다양한 예시

1. 기본 사용 예시

if (n := len(some_list)) > 10:
	print(f"List is too long ({n} elements, expected <= 10)")

 

2. 반복문과 함께 사용

# 기존 방식
data = input("Enter number: ")
while data:
	print("You entered:", data)
    data = input("Enter number: ")
    
# Walrus Operator 사용
while (data := input("Enter number: ")):
	print("You entered:", data)

 

 

3. 리스트 컴프리헨션과 함께 사용

# 기존 방식
filtered_data = []
for item in data:
	result = process(item)
    if result > 0:
    	filtered_data.append(result)

# Walrus Operator 적용
filtered_data = [result for item in data if (result := process(item) > 0]

 

 

4. 결론

Walruls Operator 는 다양한 상황에서 코드의 간결성을 높이고 중복을 줄이는 데 유용하다. 특히 조건문, 반복문, 리스트 컴프리헨션에서 유용하게 사용할 수 있으며, 코드의 가독성을 향상시킨다.

728x90
반응형

댓글