truty , falsy value

0

CS 지식

목록 보기
7/7
post-thumbnail

우선 이 개념 정리는 이 사이트의 내용을 바탕으로 정리했습니다!

truty , falsy 이게 무엇인고?

truthy- true는 아니지만 true 처럼 '평가된다' (Values that evaluate to True are considered Truthy.)
falsy- false는 아니지만 false 처럼 '평가된다' (Values that evaluate to False are considered Falsy.)

위에서 if 문 뒤에 별도의 조건은 없지만 위 구문은 다음과 같은 형태를 가집니다.
식1 and 식1 and 식1 == True일 때 pass 다른 경우 즉 하나라도 false인 경우 else의 구문이 실행이 됩니다.

첨에는 regEXP_email~~ == None and regEXP_pw~~ == None and regEXP_phone~~ == None이런식으로 적었는데 이 개념을 알고 나면 그렇게 쓸필요가 없었습니다.
이렇게 적게되면 물론 boolean 값을 좀 더 정확하게 비교하면서 결과를 얻을 수 있지만 원하는 결과를 얻을 때 좀 더 간략하게 적을 수 있다면 적는것이 좋은 프로그래밍이기 때문에 tryty falsy value를 적용하는 것이 좀 더 낫다고 할 수 있습니다. (앞으로 T/F value)라 칭하겠습니다.

falsy != False

특히 다른 분의 코드를 같이 보면서 한 가지 더 발견한 사실이 있는데(허락받았습니다 ㅎㅎ ) falsy와 False는 다르다는 것입니다.


이 사실은 코드를 작성하신 분이 계속 예외케이스에 걸리지 않고 제대로 출력이 된다고 같이 디버깅하는 과정에서 발견(?)하게 되었습니다. 아마도 False와 None이 같기때문에 True가 나오고 그때 예외 메시지가 나올 것을 생각한 것 같습니다.

위 코드를 보면 p.match(email) == False라는 구문이 있습니다. 정규식에서 match를 썼을 때 그 값이 없다면 None을 반환합니다.


위에 보는 것처럼 None과 False는 엄연히 다릅니다. 그렇기 때문에 예외로 처리가 되지 않았던 것입니다.

truty falsy 값 예시

T/F value언어마다 속하는 값이 다르기 때문에 사용하기 전에 자신이 사용하는 언어에서 어떤 값을 가지는지 확인하는 것을 추천드립니다. (ex. javascript -[] -truty/ python- [] falsy)
확인을 하는 방법은 파이썬에서는 bool(object)를 통해 확인해볼 수 있습니다.

저는 파이썬을 중심으로 정리하겠습니다.

truty :

  • object (by documentation)
  • non-empty sequences or collections (list,tuple, string,dictionary,set)
  • 0이 아닌! Numerlic value
  • True

falsy:

  • empty sequences or collections ([], (), "", {}, set(), range(0))
  • zero of any numeric type (integer : 0, float: 0.0 , complex :0j)
  • Constants (None,False)

특히 object의 경우, 위 예시에서 같은 변수라도 그 오브젝트에 들어가는 값에 따라서 그 값의 boolean 값이 결정되는 것을 확인가능합니다.


2021.07.04 javascript truty falsy 반영

truty :

  • object ( all string escept empty string)
  • ALL sequences or collections (array, object) - 빈객체 포함!! ([], {})
  • 0이 아닌! Numerlic value
  • True

falsy:

  • EMPTY-string ("")
  • zero (integer : 0, NaN-not a number-)
  • null(빈객체이지만 falsy) , undefined

자바스크립트는 isboolean같은 함수가 없어서 if 문으로 확인하거나 함수를 정의해서 확인
booleancheck 함수 정의

null !== {}

null !== []

truty falsy 값 사이의 연산

위의 연산의 결과를 잘못 예상하여 결과를 받은 것처럼 T/F value간의 연산 결과는 빠르게 예상은 힘든데요. 그래서 연산한 결과를 정리하려고 합니다.

특히 핵심이 되는 None의 경우를 중심으로 살펴보면 다음과 같습니다!

none은 falsy한 값이지만 그 의미는 아예 값이 없다는 것을 의미하기 때문에 값이 존재하는 0이나 False와는 다릅니다. 그래서 bool(None == 0),bool(None == False)의 값이 False가 나오는 것입니다.

profile
기록을 통해 한 걸음씩 성장ing!

0개의 댓글