海象运算符:=

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]

posted @ 2021-08-20 15:54  兔子春  阅读(380)  评论(0编辑  收藏  举报