-
第二个用户的购物车里混进了第一个用户的商品:我在 Python 里因为一个 def func(items=[]) 的可变默认参数,踩了个跨用户数据泄露的共享状态大坑
测试同事报告:账号 A 加完商品,账号 B 调同一个接口,购物车里竟带着 A 的商品——跨用户数据泄露。根因是我把默认参数写成了 def add_to_cart(item, cart=[]),而默认值在 def 定义时只创建一次、被所有调用共享。这篇复盘讲清原理、None 哨兵正解,并举一反三到可变类属性、[[0]*n]*m、返回内部引用这一整类共享可变状态的坑。- 0
- 0
数据隔离
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!
![第二个用户的购物车里混进了第一个用户的商品:我在 Python 里因为一个 def func(items=[]) 的可变默认参数,踩了个跨用户数据泄露的共享状态大坑](https://blog.biekanle.com/wp-content/uploads/thumb/2026/06/fill_w526_h326_g0_mark_manual_302_cover.webp)
