海象运算符:=

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]

上一篇:全局刷新例题


下一篇:SwiftUI macOS和iPad精品项目之天气完整App(项目含源码)