콘텐츠로 건너뛰기

파이썬 부정 연산자 사용 방법

[

Python의 not 연산자 사용하기

Python의 not 연산자는 Boolean 표현식과 객체의 진리 값을 반전시킬 수 있습니다. 이 연산자는 if 문이나 while 루프와 같은 Boolean 문맥에서 사용할 수 있습니다. 또한, 변수의 진리 값도 반전시킬 수 있는 비-Boolean 문맥에서도 작동합니다.

not 연산자를 효과적으로 사용하면 프로그램의 실행 흐름을 제어하기 위해 정확한 부정적인 Boolean 표현식을 작성할 수 있습니다.

이 튜토리얼에서 다음을 배웁니다:

  • Python의 not 연산자가 작동하는 방식
  • not 연산자를 Boolean 문맥과 비-Boolean 문맥에서 사용하는 방법
  • 논리 부정을 수행하는 operator.not_() 함수를 사용하는 방법
  • 코드에서 불필요한 부정적인 논리를 피하기 위한 가장 좋은 방법

Python에서 불리언 논리 작업하기

조지 부얼은 지금은 불리언 대수로 알려진 것을 만들었는데, 이는 거짓 값을 기반으로 합니다. 불리언 대수는 AND, OR, 그리고 NOT과 같은 세트의 불리언 연산을 정의합니다. 이러한 불리언 값과 연산자는 프로그래밍에서 프로그램의 행동을 결정하는 데 도움이 됩니다.

>>> issubclass(bool, int)
True
>>> help(bool)
Help on class bool in module builtins:
class bool(int)
bool(x) -> bool
...

이 타입은 TrueFalse라는 두 가지 가능한 값을 가지며, Python에서 내장 상수로 정의되어 대문자로 표기해야 합니다. 내부적으로 Python은 이를 정수 숫자로 구현합니다:

>>> type(True)
<class 'bool'>
>>> type(False)
<class 'bool'>
>>> isinstance(True, int)
True
>>> isinstance(False, int)
True
>>> int(True)
1
>>> int(False)
0

Python은 내부적으로 True에 대해 1을, False에 대해 0을 사용하여 불리언 값을 구현합니다. 대화형 모드에서 True + True를 실행하세요.

Boolean 논리의 부정 적용하기

Python의 not 연산자를 사용하면 Boolean 표현식과 객체의 진리 값을 반전시킬 수 있습니다. not 연산자는 TrueFalse로, FalseTrue로 반전시킵니다. 이를 통해 조건문에서 코드 실행의 흐름을 제어하거나, 특정 상황에서 코드를 실행할지 여부를 결정할 수 있습니다.

if 문에서 not 연산자 사용하기

if 문에서 not 연산자를 사용하면 조건이 거짓일 때 블록 내의 코드가 실행됩니다. 예를 들어, 다음 코드는 변수 x가 0이 아닐 때 출력을 실행합니다:

x = 0
if not x:
print("x is not zero")

while 루프에서 not 연산자 사용하기

while 루프에서 not 연산자를 사용하면 조건이 거짓이 될 때까지 루프가 계속 실행됩니다. 다음 예제는 count 변수가 5가 아닐 때까지 출력을 반복적으로 실행합니다:

count = 0
while not count == 5:
print("Count is:", count)
count += 1

Boolean이 아닌 문맥에서 not 연산자 사용하기

not 연산자는 Boolean 외에도 비-Boolean 문맥에서도 작동합니다. 이 경우, not 연산자는 피연산자의 진리 값이 반전된 결과를 반환합니다. 예를 들어, 다음 코드는 x가 비어 있지 않을 때 not 연산자를 사용하여 빈 문자열 여부를 판별합니다:

x = ""
if not x:
print("x is empty")

이 경우, x가 비어 있으므로 not 연산자에 의해 코드가 실행됩니다.

함수 기반의 not 연산자 사용하기

Python은 not 연산자를 사용하는 대신 operator 모듈에서 not_() 함수를 사용할 수도 있습니다. 이 함수는 피연산자의 진리 값이 반전된 결과를 반환합니다. not 연산자와 동일한 결과를 얻을 수 있지만, not_() 함수를 사용하는 이점은 무엇일까요? 바로 not 연산자를 사용할 수 없는 종류의 객체에도 작동한다는 것입니다. 예를 들어, 다음 예제에서는 리스트에서 not 연산자를 사용하여 빈 리스트인지 확인하는 대신 not_() 함수를 사용합니다:

import operator
my_list = []
if operator.not_(my_list):
print("my_list is not empty")

Python의 not 연산자 사용 시 주의사항

Python의 not 연산자를 사용하는 경우 다음과 같은 몇 가지 주의사항이 있습니다.

멤버십 테스트하기

not 연산자를 사용하여 변수가 컬렉션의 멤버인지 여부를 확인할 때 주의해야 합니다. not 연산자는 변수가 컬렉션에 없는지를 확인할 수 없습니다. 따라서 멤버십 테스트를 수행할 때는 not 연산자를 사용하지 않고, in 키워드를 사용하는 것이 좋습니다. 예를 들어, 다음 코드는 리스트 numbers에 숫자 3이 포함되지 않았을 때 출력을 실행합니다:

numbers = [1, 2, 4, 5]
if 3 not in numbers:
print("3 is not in the list")

객체의 식별 확인하기

not 연산자는 객체의 식별을 확인하지 않습니다. 즉, not 연산자로 인스턴스의 동일성을 확인할 수 없습니다. 만약 두 개의 서로 다른 객체가 있는데, 객체들의 값이 같다면 not 연산자로는 그들이 동일한 객체인지 확인할 수 없습니다. 이런 경우에는 is 연산자를 사용해야 합니다. 예를 들어, 다음 코드는 두 개의 서로 다른 리스트 list_1list_2가 있을 때, 이들이 동일한 객체인지 확인합니다:

list_1 = [1, 2, 3]
list_2 = [1, 2, 3]
if list_1 is not list_2:
print("list_1 and list_2 are not the same object")

불필요한 부정적인 논리 피하기

코드를 작성할 때 가능한한 불필요한 부정적인 논리를 피해야 합니다. 가독성과 유지 보수성을 위해서, 가능한한 긍정적인 표현을 사용하도록 해야 합니다. 예를 들어, 다음 코드는 부정적인 논리를 사용하여 True인지 확인하는 대신 긍정적인 표현을 사용합니다:

x = True
if x:
print("x is true")

결론

Python의 not 연산자는 Boolean 표현식과 객체의 진리 값을 반전시킬 수 있는 강력한 도구입니다. 이 연산자를 사용하여 코드의 실행 흐름을 제어하고, 변수의 진리 값을 반전시킬 수 있습니다. 이 튜토리얼에서는 not 연산자가 작동하는 방식과 사용 방법을 자세히 알아보았습니다. 또한, 몇 가지 실용적인 예제를 통해 not 연산자의 주요 사용 사례와 사용에 대한 최적의 방법을 살펴보았습니다.

부정적인 논리를 사용하여 코드를 작성하는 것은 실수를 유발할 수 있습니다. 가능한한 긍정적인 표현을 사용하여 가독성을 개선하고, 코드의 의도를 명확히 전달하는 것이 좋습니다.

이제 Python의 not 연산자에 대해 이해하고, 실제 코드에 적용해보세요. 좀 더 자세한 내용은 공식 Python 문서를 확인하시기 바랍니다.