Let’s take an example :
I would like to check if the variable
s is a string with length equal or less than 3. I tried the following :
if (not isinstance(s,str)) | (len(s)>3) : print("The value of s is not correct : must be a string, with length equal or less than 3")
But it is not correct as the code considers the second condition whatever the result of the first one. For example, with
s = 2, the code returns the error :
object of type 'int' has no len()
I would have thought that since the first condition is
True, that the rest of the line would not have been considered. How please could I get the code to run until the first
True condition is reached?
| is a bitwise or. use the keyword
The or will shortcircuit as you correctly mention in your question, so if
s is not a string the second part will not evaluate, preventing the error of trying to apply
len to a non-string object.
if not isinstance(s, str) or len(s) > 3: print("The value of s is not correct : must be a string, with length equal or less than 3")