age=20
if age>18:
print("已经成年了")
等同于
if (age:= 20) > 18: print("已经成年了")
在运算的时候赋值
members = [
{"name": "小五", "age": 23, "height": 1.75, "weight": 72},
{"name": "小李", "age": 17, "height": 1.72, "weight": 63},
{"name": "小陈", "age": 20, "height": 1.78, "weight": 82},
]
count = 0
def get_bmi(info):
global count
count += 1
print(f"执行了 {count} 次")
height = info["height"]
weight = info["weight"]
return weight / (height ** 2)
# 查出所有会员中过于肥胖的人的 bmi 指数
fat_bmis = [get_bmi(m) for m in members if get_bmi(m) > 21]
print(fat_bmis)
执行了 1 次 执行了 2 次 执行了 3 次 执行了 4 次 执行了 5 次 执行了 6 次 [23.510204081632654, 21.29529475392104, 25.88057063502083]
在if条件语句执行为true的时候,会再调用get_bmi来计算生成list、
fat_bmis2 = [bmi for m in members if (bmi := get_bmi(m)) > 21]
print(fat_bmis2)
执行了 1 次 执行了 2 次 执行了 3 次 [23.510204081632654, 21.29529475392104, 25.88057063502083]