콘텐츠로 건너뛰기

파이썬 월러스 연산자 쉽게 사용하기

[

월러스 연산자: Python 3.8 대입 표현식

Geir Arne Hjelle에 의해 작성되었습니다.

월러스 연산자 기본 사항

각 새로운 Python 버전은 언어에 새로운 기능을 추가합니다. Python 3.8에 대한 가장 큰 변화는 대입 표현식의 추가입니다. 구체적으로, := 연산자는 식 중간에 변수를 할당하기 위한 새로운 구문을 제공합니다. 이 연산자는 구어체로 월러스 연산자라고 불립니다.

이 튜토리얼은 월러스 연산자에 대한 깊은 소개입니다. 구문 업데이트의 동기와 대입 표현식이 유용할 수 있는 몇 가지 예제를 탐색할 것입니다.

이 튜토리얼에서는 다음을 배울 수 있습니다:

  • 월러스 연산자를 식별하고 그 의미를 이해합니다.
  • 월러스 연산자의 사용 사례를 이해합니다.
  • 월러스 연산자를 사용하여 반복되는 코드를 회피합니다.
  • 월러스 연산자를 사용하는 코드와 다른 대입 방법을 사용하는 코드로 변환합니다.
  • 월러스 연산자를 사용할 때 역 호환성에 대한 영향을 이해합니다.
  • 대입 표현식에서 적절한 스타일을 사용합니다.

이 튜토리얼의 모든 월러스 연산자 예제는 Python 3.8 이상이 필요합니다.

무료 다운로드: [Python Tricks: The

월러스 연산자 기본 사항

이제 원문에서 파이썬 인터프리터에서 아래 코드와 함께 REPL에서 재생하면 대입 표현식에 대한 첫 번째 인상을 얻을 수 있습니다:

>>> walrus = False
>>> walrus
False
>>> (walrus := True)
True
>>> walrus
True

1번 줄은 False 값을 walrus에 할당하는 전통적인 대입 문입니다. 다음으로, 5번 줄에서 대입 표현식을 사용하여 True 값을 walrus에 할당합니다. 1번 줄과 5번 줄 모두 walrus라는 변수 이름을 사용하여 할당된 값을 참조할 수 있습니다.

5번 줄에서 괄호를 사용하는 이유에 대해 궁금할 수 있으며, 이 튜토리얼의 후반부에서 괄호가 필요한 이유를 배우게 될 것입니다.

참고: Python에서 **문(statement)**은 코드의 단위입니다. **식(expression)**은 일부 값으로 평가를 할 수 있는 특별한 문입니다. 예를 들어, 1 + 2는 값 3으로 평가되는 식입니다. 반면, number = 1 + 2는 값으로 평가되지 않는 대입 문입니다.

이제 대입 표현식을 사용한 코드와 다른 대입 방법을 사용한 코드 사이에서 변환하는 방법과 월러스 연산자를 사용할 때의 역 호환성에 대한 영향에 대해 배우십시오.

월러스 연산자 사용 사례

디버깅

월러스 연산자는 디버깅 작업에서 특히 유용한 도구입니다. 변수나 표현식 값을 출력하는 것뿐만 아니라 이전 값과 현재 값을 비교하는 등의 작업을 할 수 있습니다. 월러스 연산자를 사용하면 코드를 더욱 간결하게 작성할 수 있으며, 디버깅 시간을 단축시킬 수 있습니다.

다음은 디버깅에 월러스 연산자를 사용하는 간단한 예입니다:

while (data := get_next_data()) is not None:
process_data(data)

위 코드에서, get_next_data 함수는 데이터를 반환하거나 None을 반환할 수 있습니다. get_next_data 함수가 None을 반환할 때까지 데이터를 처리합니다. 월러스 연산자를 사용하면 데이터가 None인지 확인할 수 있으므로 범위 오류를 방지할 수 있습니다.

리스트와 딕셔너리

월러스 연산자는 리스트나 딕셔너리와 같은 컬렉션에서 유용하게 사용될 수 있습니다. 예를 들어, 다음과 같은 코드에서 월러스 연산자를 사용하여 리스트에서 값의 유무를 확인할 수 있습니다:

numbers = [1, 2, 3, 4, 5]
# 리스트에서 홀수인 숫자만 추출하여 새로운 리스트에 저장
odd_numbers = [n for n in numbers if (remainder := n % 2) != 0]

위 코드에서, (remainder := n % 2)는 나머지 값을 변수 remainder에 할당하여 리스트 컴프리헨션에서 조건문으로 사용됩니다. 월러스 연산자를 사용하면 리스트 컴프리헨션에서 중복 코드를 피할 수 있으며, 코드의 가독성이 향상됩니다.

또한, 딕셔너리의 키와 값을 동시에 확인하고 변경할 때도 월러스 연산자를 사용할 수 있습니다:

d = {"a": 1, "b": 2, "c": 3}
# 키와 값을 바꾸기
swapped = {value: key for key, value in d.items() if (value := key) != value}

위 코드에서, value := key는 딕셔너리 컴프리헨션에서 키와 값을 변경하는 작업을 진행합니다. 월러스 연산자를 사용하면 딕셔너리를 더 간결하게 작성할 수 있으며, 코드의 가독성과 유지보수성이 향상됩니다.

리스트 컴프리헨션

리스트 컴프리헨션은 월러스 연산자와 함께 사용할 때 특히 유용합니다. 월러스 연산자를 사용하여 컴프리헨션 내부에서 값과 조건을 동시에 처리할 수 있습니다.

예를 들어, 다음과 같이 리스트에서 조건에 맞는 값들을 추출할 수 있습니다:

numbers = [1, 2, 3, 4, 5]
even_numbers = [n for n in numbers if (remainder := n % 2) == 0]

위 코드에서, (remainder := n % 2)는 컴프리헨션 내부에서 값과 조건을 함께 처리합니다. 월러스 연산자를 사용하면 중복 계산을 피하고 가독성을 높일 수 있습니다.

while 루프

while 루프의 조건에서 월러스 연산자를 사용하면 코드를 간결하게 만들 수 있습니다. 예를 들어, 다음과 같이 while 루프에서 월러스 연산자를 사용하여 값의 유무를 확인할 수 있습니다:

while (data := get_next_data()) is not None:
process_data(data)

위 코드에서, get_next_data 함수가 None을 반환할 때까지 데이터를 처리하는 while 루프가 실행됩니다. 월러스 연산자를 사용하면 get_next_data 함수의 반환 값을 반복적으로 확인할 필요가 없으므로 반복 코드를 줄일 수 있습니다.

입증과 반례

월러스 연산자는 입증과 반례를 작성할 때도 유용합니다. 코드 조각을 검증하거나 특정 결과를 생성하는 테스트를 작성하는 경우에 월러스 연산자를 사용하여 효율적으로 코드를 작성할 수 있습니다.

월러스 연산자 구문

월러스 연산자의 구문은 다음과 같습니다:

x := expression

이 구문은 expression의 값을 x에 할당하고 x로 평가합니다. 월러스 연산자는 식의 일부로 사용될 수 있고, if, while, forwith 문 등에서도 사용될 수 있습니다.

월러스 연산자의 함정

월러스 연산자를 사용할 때 몇 가지 함정에 주의해야 합니다. 이러한 함정을 알고 있다면 코드를 더욱 안정적으로 작성할 수 있습니다.

  1. 코드 가독성: 월러스 연산자는 표현식을 더 간결하게 만들어 가독성을 향상시킬 수 있습니다. 하지만, 오용되면 코드의 가독성을 저하시킬 수도 있으므로 적절히 활용해야 합니다.
  2. 이름 충돌: 월러스 연산자를 사용할 때 기존에 선언된 변수와의 이름 충돌에 주의해야 합니다. 변수 이름이 이미 사용 중이라면 월러스 연산자를 사용하지 않는 것이 좋습니다.
  3. 부작용: 월러스 연산자가 간결한 코드를 작성하는 데 도움이 될 수 있으나, 부작용이 있는 표현식에 사용해야 할지 신중하게 고려해야 합니다. 부작용이 있는 표현식을 월러스 연산자로 작성하면 코드의 이해도가 저하될 수 있습니다.

결론

Python 3.8에서 도입된 월러스 연산자는 대입 표현식의 중간에 변수를 할당하기 위한 새로운 구문을 제공합니다. 월러스 연산자는 코드를 더 간결하게 작성하고 중복을 줄일 수 있는 좋은 도구입니다. 월러스 연산자의 사용 사례에 대해 배우고, 코드의 가독성과 이해도를 향상시키는 방법을 알아보았습니다.

이제 월러스 연산자의 구문과 함정을 이해하고 어떻게 적절하게 사용할 수 있는지 알게 되었습니다. 월러스 연산자를 활용하여 Python 코드를 작성하는 데 도움이 되기를 바랍니다.