函数-类型注解
为函数添加类型注解,其实主要就是为函数的参数和返回值添加类型注解,具体语法如下:

在函数调用过程当中,类型推断依然是生效的,但是前提是要为参数有默认值赋值,它才会推断出来,如果没有默认值,它就推断不出来了,这个时候我们就可以手动地去给它加上类型注解。
python
# 函数类型注解
def circle_area_len(r: float) -> tuple[float, float]:
return round(3.14 * r * r, 1), round(2 * 3.14 * r, 1)
al = circle_area_len(8.5)
print(al) # (226.9, 53.4)
python
def calc_order_cost(*args:tuple[str, float, int], coupon=0, score=0, express=0.0):
# def calc_order_cost(*args:tuple[str, float, int], coupon:int=0, score:int=0, express:flat=0.0) -> float: #这行更完整
"""
根据传入的一批商品信息(商品名、价格、数量)、优惠(优惠券、积分抵扣)、运费信息计算订单的总金额
:param args: 商品信息(商品名、价格、数量) # 可以用列表或元组 ---->如:("鼠标", 188, 2) ("键盘", 388, 1)
:param coupon: 优惠券
:param score: 积分
:param express: 运费
:return: 订单的总金额
"""
# 订单的总金额 = 商品总金额 - 优惠券 - 积分抵扣 + 运费
# 1. 计算商品总金额
total_price = [goods[1]*goods[2] for goods in args]
total_cost = sum(total_price)
# 2. 扣减优惠券
if total_cost >= 5000 and coupon <= total_cost:
total_cost -= coupon
# 3. 扣减积分抵扣
if total_cost >= 5000 and score // 100 <= total_cost:
total_cost -= score // 100
# 4. 添加运费
total_cost += express
return total_cost
# 测试
total = calc_order_cost(("鼠标", 88.5, 2), ("键盘", 388, 1), ("手机", 6999, 1))
print(total) # 7564.0
小结:
- 函数中类型注解的语法?

强调一点:关于函数的类型注解,你可以加,也可以不加,不加也不会影响函数的正常运行,只不过,有一些错误可能到运行的时候才会发现,代码的可维护性不高,如果加了类型注解,我们在编写代码的时候,错误可能马上就会暴露出来,从而降低代码出错的概率。
对于需要团队协作开发和长期维护的项目,推荐使用类型注解。
但是如果基于Python的解释器,它可以推断出这个变量的类型、参数的类型,那这个类型注解加不加都是可以的;如果推断不出来的情况下,建议加上类型注解,让代码更便于后期的维护。
**声明:**本篇学习笔记参考黑马程序员相关课程,部分素材来源于网络公开资料及本人补充;文中为个人整理复盘,仅供学习交流使用。