Rahul Sharma Rahul Sharma - 3 years ago 106
Python Question

How to check if a variable is equal to one string or another string?

if var is 'stringone' or 'stringtwo':
dosomething()


This does not work! I have a variable and I need it to do something when it is either of the values, but it will not enter the if statement. In Java
if (var == "stringone" || "stringtwo")
works. How do I write this in Python?

Answer Source

This does not do what you expect:

if var is 'stringone' or 'stringtwo':
    dosomething()

It is the same as:

if (var is 'stringone') or 'stringtwo':
    dosomething()

Which is always true, since 'stringtwo is considered a "true" value.

There are two alternatives:

if var in ('stringone', 'stringtwo'):
    dosomething()

Or you can write separate equality tests,

if var == 'stringone' or var == 'stringtwo':
    dosomething()

Don't use is, because is compares object identity. You might get away with it sometimes because Python interns a lot of strings, just like you might get away with it in Java because Java interns a lot of strings. But don't use is unless you really want object identity.

>>> 'a' + 'b' == 'ab'
True
>>> 'a' + 'b' is 'abc'[:2]
False # but could be True
>>> 'a' + 'b' is 'ab'
True  # but could be False
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download