Python 是';如果q和r:';单独评估?

Python 是';如果q和r:';单独评估?,python,Python,这是一个非常简单的问题。是 if q and r: 始终保证与此等效 if q: if r: Python的和和或是短路运算符,因此是的:在您的示例中,如果“q”为false,那么解释器将不计算“r” 编辑-经过一番思考后,我意识到重要的是要注意Python的和和或有点像Javascript&和|。它们不会产生布尔结果。换句话说,计算时的操作数(“q”和“r”)在某种程度上是“内部”转换为布尔值的,但这只是为了看看执行应该如何进行。因此,如果“q”和“r”都是非空字符串,q和r的结果是“

这是一个非常简单的问题。是

if q and r:
始终保证与此等效

if q:
  if r:

Python的
短路运算符,因此是的:在您的示例中,如果“q”为false,那么解释器将不计算“r”


编辑-经过一番思考后,我意识到重要的是要注意Python的
有点像Javascript
&
|
。它们不会产生布尔结果。换句话说,计算时的操作数(“q”和“r”)在某种程度上是“内部”转换为布尔值的,但这只是为了看看执行应该如何进行。因此,如果“q”和“r”都是非空字符串,
q和r
的结果是“r”的字符串值,而不是布尔值
true
。但是,当在给定的上下文中使用(一个
if
语句)时,
if
语句本身将把结果转换为布尔值,以便做出自己的控制流决策,因此本例的答案仍然是“yes”:-

+1,用于编辑实际上不返回布尔值的布尔运算符。