5

I searched for understanding about the all function in Python, and I found this, according to here:

all will return True only when all the elements are Truthy.

But when I work with this function it's acting differently:

'?' == True   # False
'!' == True   # False
all(['?','!']) # True

Why is it that when all elements in input are False it returns True? Did I misunderstand its functionality or is there an explanation?

Community
  • 1
  • 1
ᴀʀᴍᴀɴ
  • 4,443
  • 8
  • 37
  • 57

3 Answers3

9

only when all the elements are Truthy.

Truthy != True.

all essentially checks whether bool(something) is True (for all somethings in the iterable).

>>> "?" == True
False
>>> "?" == False # it's not False either
False
>>> bool("?")
True
L3viathan
  • 26,748
  • 2
  • 58
  • 81
1

'?' and '!' are both truthy since they are non-empty Strings.

There's a difference between True and "truthy". Truthy means that when coerced, it can evaluate to True. That's different from it being == to True though.

Carcigenicate
  • 43,494
  • 9
  • 68
  • 117
-2

all() function is used when we want to check that if all the items in a list are iterable or not. For ex : x=[1,2,3,4,5] all(x) It will return True.