问题描述
我不明白这行的意思:
parameter and (" " + parameter) or ""
其中参数是字符串
通常情况下,为什么要对 Python 字符串使用 and
和 or
运算符?
Why would one want to use and
and or
operator, in general, with python strings?
推荐答案
假设你正在使用 parameter
的值,但是如果该值是 None
,那么你宁愿有一个空字符串 ""
而不是 None
.你一般会做什么?
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 ""
这就是这个表达式所做的.首先,您应该了解 and
和 or
运算符的作用:
This is what that expression is doing. First you should understand what and
and or
operator does:
a 和 b
返回b
如果 a 是True
,否则返回a
.a or b
如果 a 是True
,则返回a
,否则返回b
.
a and b
returnsb
if a isTrue
, else returnsa
.a or b
returnsa
if a isTrue
, else returnsb
.
所以,你的表情:
parameter and (" " + parameter) or ""
实际上等效于:
(parameter and (" " + parameter)) or ""
# A1 A2 B
# A or B
在以下情况下如何评估表达式:
How the expression is evaluated if:
参数 - A1
被评估为True
:
parameter - A1
is evaluated toTrue
:
result = (True and " " + parameter) or ""
result = (" " + parameter) or ""
result = " " + parameter
参数 - A1
是 None
:
parameter - A1
is None
:
result = (None and " " + parameter) or ""
result = None or ""
result = ""
作为一般建议,使用 A if C else B
形式表达式作为条件表达式会更好且更具可读性.所以,你应该更好地使用:
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 ""
而不是给定的表达式.有关 if-else 背后的动机,请参阅 PEP 308 - 条件表达式
表达式.
instead of the given expression. See PEP 308 - Conditional Expression for motivation behind the if-else
expression.
这篇关于使用“和"和“或"带有 Python 字符串的运算符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!