Truthy & Falsy란 무엇인가?

박준영·2021년 5월 30일
0
post-thumbnail

저는 처음에 Truthy & Falsy 참같은값? 거짓같은값? 이 부분에 대해서 이해하기 어려웠고 처음코딩을 접하시는 분들도 이부분에 대해서 이해하기 어려우실 거라고 생각합니다.

기본적으로 규칙은 비슷합니다.

  • Ture 로 평가되는 값은 Truthy로 고려됩니다.
  • False 로 평가되는 값은 Falsy로 고려됩니다.

부울 컨텍스트
값을 if, while 조건으로 사용할 때 부울 컨텍스트에서 사용합니다.
부울 컨텍스트 값은 true가 있거나 false의미가 있어야하는 코드의 특정 부분으로 생각할 수 있습니다.

예를들면if <value>: 중에 value에 true혹은 false가 들어갑니다.


거짓 값

  • 빈 목록 [], 빈 듀플 (), 빈 딕셔너리 {}, 빈 세트 set(), 빈 문자열 "", 빈 범위 range(0)

  • 0, 0j, 0.0

  • none, false


참 값

  • 비어있지 않은 빈듀플이나 딕셔너리등등이 있습니다.
  • 0이 아닌 숫자 값
  • True

내장된 bool()함수

bool값은 True, False 둘 중 하나를 반환합니다.

예)
bool(1)
True

bool(0)
False

bool(-5)
True

bool(0.0)
False

bool(none)
Flase
등이 있습니다.

if문의 not에 대해서 알아보겠습니다.

def print_even(data):

	if not data:
		raise ValueError("The argument data cannot be empty")

	for value in data:
		if value % 2 == 0:
			print(value)

위처럼 if not data에 대해서 알아보면
data비어있을경우

  • 비어있는 경우는 falsy값이 됩니다 data는 false가 됩니다.
  • not data에 상응하는 것은 not false입니다 true
  • 조건은 true 입니다.
  • 예외가 발생합니다.

data비어있지 않은 경우

  • 비어있지 않은 경우 True입니다.
  • not data에 상응하는 것은 not true 입니다 flase
  • 조건은 false입니다.
  • 예외가 발생하지 않습니다.

예시)
처음에는 이렇게 만들었습니다.

if re.search(email_regex, email)==None:
    return JsonResponse({'message': '이메일 형식이 아닙니다.'}, status= 400)

이번에 배웠던 내용으로 아래와 같이 만들게 되었습니다.

if not re.search(email_regex, email):
    return JsonResponse({'message': '이메일 형식이 아닙니다.'}, status= 400)
위와 같은 함수를 만들었습니다. 

설명

저는 쉽게 None는 false값이라고 생각했고, if not re.search(email_regex, email): 처럼 not을 쓴이유는 email값이 비어있지 않으면 not data처럼 false값이기 때문에 같은 내용이라고 생각했습니다.
틀릴 수도 있지만 이해한 내용을 응용해서 수정하게 되었습니다.

이부분에 대해서 더 알게되는 내용이 있다면 계속 수정해 가겠습니다.

0개의 댓글