在Python字符串中使用“and”和“or”运算符
作者:互联网
参见英文答案 > Strange use of “and” / “or” operator 8个
我不明白这条线的含义:
parameter and (" " + parameter) or ""
其中parameter是string
为什么人们想要使用和和或运算符一般使用python字符串?
解决方法:
假设您正在使用参数的值,但如果该值为None,那么您更愿意使用空字符串“”而不是None.你一般会做什么?
if parameter:
# use parameter (well your expression using `" " + parameter` in this case
else:
# use ""
这就是表达式正在做的事情.首先,你应该了解什么和和或运算符:
> a和b如果a为True则返回b,否则返回a.
> a或b如果a为True则返回a,否则返回b.
所以,你的表达:
parameter and (" " + parameter) or ""
这实际上相当于:
(parameter and (" " + parameter)) or ""
# A1 A2 B
# A or B
在以下情况下如何评估表达式:
>参数 – A1被评估为True:
result = (True and " " + parameter) or ""
result = (" " + parameter) or ""
result = " " + parameter
>参数 – A1为无:
result = (None and " " + parameter) or ""
result = None or ""
result = ""
作为一般建议,对于条件表达式,使用A if C else B形式表达式会更好,更具可读性.所以,你应该更好地使用:
" " + parameter if parameter else ""
而不是给定的表达式.有关if-else表达式背后的动机,请参阅PEP 308 – Conditional Expression.
标签:boolean-operations,python,string 来源: https://codeday.me/bug/20190917/1810063.html