【Python】我精心设计的默认参数,怎么就出问题了呢?

最懂你心的UP课代表来啦👍👍👍
【Python】我精心设计的默认参数,怎么就出问题了呢?
目录
一、问题
二、问题原理
三、官方解释
四、如何解决
一、问题
00:35
初始玩家叫P1
第二个玩家P2
一个道具charles
一个道具sword

打印Alice的道具
运行程序发现Alice有个armor和sword

二、问题原理
02:44
Python做默认参数时只会把参数evaluate一遍
只求一次值
把这个值当作默认参数

打印ID print.self
再运行程序
两个ID一模一样
第三个ID不一样
说明Alice Bob共享了一个list

三、官方解释
04:15
当你使用一个mutable的默认参数时
你要理解你在干什么
大部分情况达不到理想效果

四、如何解决
04:52
把默认参数变为None
is None
