Python中为何普通if语句可用break,单行if表达式却报错?
问题原因解析
Python里的**单行if-else(三元表达式)**和普通的if-else语句块本质上是两回事:
普通的if-else是语句结构,允许在分支里放置任何执行类语句(比如
break这种控制流语句),所以第一段代码完全合法:for number in content: if number != 237: print(number) else: break而
print(number) if number != 237 else break这种写法属于三元表达式,它的语法规则是表达式A if 条件 else 表达式B,这里的A和B都必须是能产生返回值的表达式,不能是语句。break是控制流语句,不属于表达式范畴,没法放在else的位置,所以会触发“expected expression after the inline else”报错。
直白点说:三元表达式是用来计算生成值的,不是用来执行控制流操作的,要终止循环还是得用普通的if-else语句块。
内容的提问来源于stack exchange,提问作者Ruben
相关产品推荐
相关产品推荐

