条件表达式是什么
若存在当依据一个条件要从两个值里挑选出一个的情况时, 能够将平常的if / else写成条件表达式:
status = "adult" if age >= 18 else "minor"固定结构是:
value_if_true if condition else value_if_false要先对中间的条件予以 判断, 倘若条件呈现为真, 那么 整个表达式便会获取到左边的值, 要是条件呈现为假, 则能够得到右边的值。
它与普通 if 的区别
普通 if 是语句,适合控制要执行哪些代码:
if temperature > 30: print("Turn on the fan") else: print("Keep the fan off")条件表达式会产生一个值,所以适合赋值、返回或作为函数参数:
label = "hot" if temperature > 30 else "normal" def access_level(is_admin): return "admin" if is_admin else "user" print("available" if stock > 0 else "sold out")要是目标是在条件成立的状况下做一件事情, 但是在条件不成立的时候就不进行处理, 那就直接去写普通的if。条件表达式是不可以省略else的:
if has_error: log_error()下面的写法不合法:
# "error" if has_error不要堆叠太多条件
条件表达式可以嵌套:
level = "high" if score >= 90 else "medium" if score >= 60 else "low"虽说代码是能够运行的, 然而在阅读之际却是需要反复去确认条件以及结果的。一旦分支数量增多, 那么普通的写法反倒会更显清晰:
if score >= 90: level = "high" elif score >= 60: level = "medium" else: level = "low"简短并不便意味着易于阅读。条件表达式适宜于简单的二选一情形, 并不适宜用来压缩复杂流程。
只会计算被选中的一边
先判断条件,然后只计算对应的结果:
result = expensive_call() if use_cache is False else cached_value如果 为真,() 不会执行。这种行为叫短路求值。
然而, 将带有明显副作用之事的函数调用放置到条件表达式里面, 极易致使执行流程变得难以察觉, 它最适宜于挑选值, 而非去安排一连串的操作。
二级结论