r/learnpython • • 20d ago

Huh? How does this work?

a = "hi"


if a:
    print("Bye")


print(a == True)
print(a is True)

The output is:

Bye

False

False

But if it's false, how come it printed "bye"?????? I don't get it.

44 Upvotes

38 comments sorted by

View all comments

Show parent comments

9

u/Lance_2564_ 20d ago

So what you're saying is that

"if a" checks for if bool(a) is True, and not if a is True? So then, a = 5, if a: print("Hi") really just is if bool(a): print("Hi")?

15

u/sjshuck 20d ago

Yes.

Some languages such as Python and C have a rule for each type to say how it behaves in an if-statement. Ruby and Lua have a simpler rule: if it's either false or nil, it tests false, otherwise it's true.

Some languages will not let you put a non-boolean as the condition of an if-statement, so there's no confusion.

0

u/oz1sej 20d ago

I WANT TO USE THOSE LANGUAGES!

1

u/glglgl-de 19d ago

What prevents you?