2016-12-31 3 views
-8
def check(): 
    if [1,2,3]: 
     return [2,3,4] 

check() 
[2, 3, 4] 

[1,2,3]은 목록이지만 True 또는 False 일 수있는 부울식이 아닌 것 같습니다. 그러나이 함수는 왜 목록 ([1,2,3])이 참이라고 생각합니까?다음에 오는 성명은 무엇입니까?

+2

있는 [-비어 있지리스트 (https://docs.python.org/3/library/stdtypes.html#truth- 가치 테스트)는 사실이라고 간주됩니다. – MSeifert

+0

부울식이 필요한 모든 식을 사용할 수 있습니다. – Barmar

+1

[진실 가치 테스트] (https://docs.python.org/3/library/stdtypes.html#truth-value-testing)에서 파이썬에서 참 및 거짓으로 간주되는 것을 확인하십시오. –

답변

0

임의의 표현을 if 또는 while의 조건으로 사용할 수 있습니다. 표현식의 진리 값을 평가하는 방법은 https://docs.python.org/2.4/lib/truth.html을 참조하십시오. 에 명시된 바와

+0

와우, 아직 파이썬 2.4 문서가 있습니다. :-) – MSeifert

+0

구글을 비난해라, 그것이 발견 한 페이지 다. – Barmar

0

python documentation on "Truth Value Testing" :

다음 값이 잘못된 것으로 간주된다

[...]

  • 빈 서열, 예를 들면, '', (), [] .

[...]

다른 모든 값이 true로 간주됩니다

- 많은 종류의 객체가 항상 해당 있도록.

그래서 어느하지 않은 빈 목록 True로 평가되고 (이 예 numpy.ndarray에 대한처럼 __bool__ 또는 __len__ 방법의에이 예외를 throw하지 않는 경우) 어떤 파이썬 객체는 부울 맥락에서 평가 될 수있다.

0

필자가 아는 한 모든 유형의 표현식은 빈 목록/튜플, 기술적으로는 문자 목록으로 간주 될 수있는 빈 문자열 또는 숫자 0이 아닌 한 "참"으로 간주됩니다.

PS 재미있는 사실처럼 숫자 0.000001은 True를 반환합니다.

관련 문제