Truthy와 Falsy는 무엇입니까?참 및 거짓과 어떻게 다릅니까?
저는 방금 파이썬에는 정상과 다른 진실과 거짓 값이 있다는 것을 배웠습니다.True
그리고.False
.
누가 진실과 거짓의 가치가 무엇인지 자세히 설명해 줄 수 있습니까?어디에 사용해야 합니까?진실과 다른 점은 무엇입니까?True
가치관과 거짓 그리고False
가치관?
는 "우는리 "truthy"와 "falsey"를 합니다.bool
치True
그리고.False
"truthy" 값은 다음과 같이 수행되는 검사를 충족합니다.if
또는while
진술들.설명서에서 설명한 것처럼 다음 값을 제외하고 모든 값은 "진실"로 간주됩니다.
None
False
- 다음을 포함하여 숫자가 0과 동일한 숫자:
- 다음을 포함하여 시퀀스 및 컬렉션이 비어 있습니다.
[]
list
{}
dict
()
tuple
set()
set
''
str
b''
bytes
bytearray(b'')
bytearray
memoryview(b'')
memoryview
range
,맘에 들다range(0)
- 의 목적물.
obj.__bool__()
아온다를 합니다.False
obj.__len__()
아온다를 합니다.0
점을obj.__bool__
정의되지 않았습니다.
설명된 대로, 이는 True 또는 False로 평가되는 값을 나타냅니다.
예를 들어 목록이 비어 있지 않은지 확인하려면 다음과 같이 확인합니다.
if len(my_list) != 0:
print("Not empty!")
다음과 같이 간단히 수행할 수 있습니다.
if my_list:
print("Not empty!")
이는 빈 목록과 같은 일부 값이 부울 값에 대해 평가될 때 거짓으로 간주되기 때문입니다.비어 있지 않은 목록은 참입니다.
마찬가지로 정수 0의 경우에는 빈 문자열 "", False의 경우에는 0이 아닌 정수, True의 경우에는 비어 있지 않은 문자열 등이 있습니다.
"truthy" 및 "falsey"와 같은 용어의 개념은 단순히 위에서 설명한 것과 같은 경우에 True로 간주되는 값과 False로 간주되는 값을 참조하십시오.
를 들어,빈예를들, 목록빈어)입니다.[]
는 " 있지 않은 )은 "hypy"로 간주됩니다.[1]
는 "됩니다.
은 Python 적용진결정실다니합성을은여하▁를 적용하여 을 판단합니다.bool()
True
또는False
와 같은 표현으로 사용되는.if
또는while
.
클래스의 입니다.Vector2d
그리고 그것은 돌아오는 인스턴스입니다.False
0인 , 않은 경우 크(벡) 가(터) 일 0때, 지않때을그렇기길True
.
import math
class Vector2d(object):
def __init__(self, x, y):
self.x = float(x)
self.y = float(y)
def __abs__(self):
return math.hypot(self.x, self.y)
def __bool__(self):
return bool(abs(self))
a = Vector2d(0,0)
print(bool(a)) #False
b = Vector2d(10,0)
print(bool(b)) #True
참고: 정의하지 않았다면__bool__
사용자 정의 클래스의 인스턴스는 기본적으로 True로 간주되므로 항상 True를 반환합니다.
책의 예: "파이썬에 유창하고, 명확하고, 간결하고, 효과적인 프로그래밍"
Truthy 값은 true 또는 false를 반환하는 boolean 값이 아니라 부울 컨텍스트에서 사용되는 개체를 나타냅니다.다음을 예로 들 수 있습니다.
>>> bool([])
False
>>> bool([1])
True
>>> bool('')
False
>>> bool('hello')
True
Truthy 또는 Falsy 값을 사용해야 하는 위치는 무엇입니까?이것들은 구문 설탕이기 때문에 항상 피할 수 있지만, 그것들을 사용하면 코드를 더 읽을 수 있고 더 효율적으로 만들 수 있습니다.게다가, 당신은 그것이 좋은 관행으로 여겨지기 때문에 파이썬이든 아니든 많은 코드 예제에서 그것들을 발견할 것입니다.
다른 답변에서 언급한 것처럼 if 테스트 및 while 루프에서 사용할 수 있습니다.은 python 된 두 입니다.or
,s
문자열 변수입니다.당신은 또한 비슷한 상황으로 확장될 것입니다.
진실없이
if len(s) > 0:
print(s)
else:
print('Default value')
사실, 그것은 더 간결합니다.
print(s or 'Default value')
3 3.이라는 할당 표현을 사용할 수 .:=
사실이 아닌
if len(s) == 0:
s = 'Default value'
do_something(s)
사실 그것도 더 짧습니다.
s or (s := 'Default value')
do_something(s)
더 짧거나 더 짧거나,
do_something(s or (s := 'Default value'))
할당 식을 사용하지 않고도 할 수 있습니다.
s = s or 'Default value'
do_something(s)
짧지는 않습니다.어떤 사람들은 그것을 찾습니다.s =...
다음과 일치하기 때문에 라인이 만족스럽지 않습니다.
if len(s)>0:
s = s # HERE is an extra useless assignment
else:
s = "Default value"
그럼에도 불구하고 당신이 편안하다면 당신은 이 코딩 스타일을 고수할 수 있습니다.
Python의 모든 개체는 실제 값을 테스트할 수 있습니다.if 또는 while 조건에서 사용하거나 부울 연산의 피연산자로 사용할 수 있습니다.
은 다음 고됩니다려값으로 간주됩니다.False
:
None
False
- 숫자 유형의 0(예: 0, 0L, 0.0, 0j)입니다.
- 예를 들어, ','(), []과 같은 빈 시퀀스입니다.
- 빈 매핑(예: {})
- 클래스의 , 된
__nonzero__()
또는__len__()
그 0 값을 , 메소드는 0 또는 bool 값을 반환합니다.False
.
모든 은 다모든값이고니됩다려른다idered로 간주됩니다.True
따라서 많은 유형의 객체는 항상 참입니다.
및 0 부결가있연산및는내항 0을 합니다.False
거짓과 1 또는 2에 대하여True
특별한 언급이 없는 한, 사실입니다.
의 if (!id) {}
반환!expr 반환false
의 단일 가 단일를로자수변있경으로 될 수 ,true
그렇지 않으면 반환됩니다.true
.
값을 true로 변환할 수 있는 경우, 그 값은 truthy라고 합니다.값을 false로 변환할 수 있는 경우 값을 falsey라고 합니다.
false로 변환할 수 있는 식의 예는 다음과 같습니다.
null;
NaN;
0;
empty string ("" or '' or ``);
undefined.
비록 그것이!
연산자는 부울 값이 아닌 피연산자와 함께 사용될 수 있으며, 반환 값은 항상 부울 원시 값으로 변환될 수 있기 때문에 부울 연산자로 간주될 수 있습니다.반환 값(또는 일반적인 식)을 해당 부울 값으로 명시적으로 변환하려면 이중 NOT 연산자 또는 부울 생성자를 사용합니다.
예:
n1 = !null // !t returns true
n2 = !NaN // !f returns true
n3 = !'' // !f returns true
n4 = !'Cat' // !t returns false
에의 if (id != null) {}
ID의 값이 null과 동일하지 않은 경우에만 확인합니다.
참조 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_NOT
Falsy는 비어 있는 목록, 튜플과 같이 비어 있는 값 또는 없음을 의미합니다.Truthy는 다음을 의미합니다. Truthy는 예외입니다.
언급URL : https://stackoverflow.com/questions/39983695/what-is-truthy-and-falsy-how-is-it-different-from-true-and-false
'programing' 카테고리의 다른 글
git://protocol이 회사에 의해 차단되었습니다. 어떻게 하면 피할 수 있을까요? (0) | 2023.07.20 |
---|---|
스프링 부트에서 CORS를 활성화하는 방법 - 작동하지 않음 (0) | 2023.07.20 |
null이 아닌 필드 'new_field'를 기본값 없이 사용자 프로파일에 추가하려고 합니다. (0) | 2023.07.20 |
SQL Server의 임시 테이블 범위 (0) | 2023.07.20 |
표준 C/C++에서 파일 구분 기호를 가져오는 방법: / 또는 \? (0) | 2023.07.20 |