是'如果q和r:'分开评估?

4 python

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

if q and r:
Run Code Online (Sandbox Code Playgroud)

总是保证等于这个?

if q:
  if r:
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 12

Python的andor短路的运营商,所以是:在你的榜样,如果"Q"是假的,那么解释不会评价"R".

编辑 -稍加思索后,它发生,我认为需要注意的是Python的是很重要的andor那种-的工作,如JavaScript &&||.它们不会产生布尔结果.换句话说,求值时的操作数("q"和"r")是"内部"转换为布尔值的排序,但这只是为了看看如何继续执行.因此,如果"q"和"r"都是非空字符串,则结果q and r是字符串值"r",而不是布尔值true.但是,当在给定的上下文(if语句)中使用时,if语句本身将把结果转换为boolean以便做出自己的控制流决策,所以这个例子的答案仍然是"是":-)