I don't understand the meaning of the line:
parameter and (" " + parameter) or ""
where parameter is string
Why would one want to use and
and or
operator, in general, with python strings?
The * operator can be used to repeat the string for a given number of times. Writing two string literals together also concatenates them like + operator. If we want to concatenate strings in different lines, we can use parentheses.
Python logical operator “and” and “or” can be applied on strings. An empty string returns a Boolean value of False.
Complex conditions in Python's if statements: and + or. To handle complex scenarios, our if statement can combine the and and or operators together. That way we turn several conditions into code, of which some have to happen simultaneously ( and ) while others need just one to be True ( or ).
Suppose you are using the value of parameter
, but if the value is say None
, then you would rather like to have an empty string ""
instead of None
. What would you do in general?
if parameter: # use parameter (well your expression using `" " + parameter` in this case else: # use ""
This is what that expression is doing. First you should understand what and
and or
operator does:
a and b
returns b
if a is True
, else returns a
.a or b
returns a
if a is True
, else returns b
.So, your expression:
parameter and (" " + parameter) or ""
which is effectively equivalent to:
(parameter and (" " + parameter)) or "" # A1 A2 B # A or B
How the expression is evaluated if:
parameter - A1
is evaluated to True
:
result = (True and " " + parameter) or "" result = (" " + parameter) or "" result = " " + parameter
parameter - A1
is None
:
result = (None and " " + parameter) or "" result = None or "" result = ""
As a general suggestion, it's better and more readable to use A if C else B
form expression for conditional expression. So, you should better use:
" " + parameter if parameter else ""
instead of the given expression. See PEP 308 - Conditional Expression for motivation behind the if-else
expression.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With