파이썬 all 내장함수 all("")시에 True 가 출력되는 이유

kdyapple98의 이미지

str = ""
bool(str)

결과는 False 였습니다.

빈 문자열은 False라는 말인데...

all("")은 왜 True를 반환할까요??
분명 all 함수는 거짓이 하나라도 있으면 False를 반환하는데 말이죠...

현재 파이썬 3.6입니다.

 의 이미지

그렇게 정해졌기 때문이지요.

빈 문자열이 False인 이유는 https://docs.python.org/3/library/stdtypes.html#truth
all에 빈 문자열을 넘기면 True인 이유는 https://docs.python.org/3/library/functions.html#all

혼란스러워 보입니다만, 이는 all이 파라미터를 iterable로 보기 때문입니다.
빈 문자열 안에는 아무것도 없으니 "False가 하나도 없으므로" True라는 거죠.
혹시 논리학에 익숙하시다면 이해하시기 좀 편하시겠습니다만.

반면에 bool은 빈 문자열을 빈 문자열 그대로 보고 False라고 보는 것이고요.