본문 바로가기
python

use-implicit-booleaness-not-comparison: Pythonic 코드 작성법

by 니나노뭉 2024. 11. 12.

리스트가 비어 있을때 분기를 했는데 pylint에서 해당 에러를 받았습니다.


C1803 오류인 use-implicit-booleaness-not-comparison는 Python 코드에서 논리 표현식을 작성할 때, 불필요하게 명시적인 비교 연산을 사용하지 않도록 권장하는 코드 스타일 문제입니다. 예를 들어, 조건문에서 변수의 존재 여부를 확인할 때 if 변수 == True 또는 if 변수 != False처럼 사용하는 경우가 이에 해당합니다.

왜 발생하는가?

Python에서는 변수 자체가 이미 True나 False로 평가되므로, 굳이 == True나 != False와 같이 비교 연산자를 사용할 필요가 없습니다. 예를 들어, if some_var == True: 대신 if some_var:와 같은 암묵적인 논리 평가가 더 간결하고 Pythonic한 코드 스타일로 여겨집니다.

예시

# 문제 코드 (C1803 발생) 

is_valid = True
if is_valid == True:
	print("유효합니다.")


# 개선된 코드
if is_valid:
	print("유효합니다.")

또한, 리스트, 문자열, 딕셔너리와 같은 데이터 구조에서도 빈 값은 False로 평가되기 때문에 굳이 len(list) > 0 같은 비교를 쓰기보다는 변수 자체로 평가하는 것이 좋습니다.

 
# 문제 코드 (C1803 발생) 
data_list = [] 

if len(data_list) > 0:
	print("데이터가 있습니다.")
 
 
# 개선된 코드
if data_list:
	print("데이터가 있습니다.")

C1803 오류 해결 방법

  1. 논리 평가 간소화: == True나 != False를 제거하고 변수 자체를 논리적으로 평가합니다.
  2. 빈 값 검사 간소화: len(data) > 0 대신 if data:와 같은 형태로 작성하여 빈 값을 확인합니다.

이렇게 하면 코드가 더 간결해지고 가독성도 높아집니다. Python의 "암묵적 불리언 평가"를 잘 활용하는 것이 좋습니다.


 

use-implicit-booleaness-not-comparison / C1803 - Pylint 4.0.0-dev0 documentation 

 

더보기
pylint documentation