args before =[] args =[99999, 10] args before =[99999, 10] args =[99999, 10, 99999, 10]
按照通常的理解,第二次调用的args应该为默认值[],但为什么会变成上一次的结果呢?
查阅Python manual有如下的说法:
Default parameter values are evaluated when the function definition is executed.This means that the expression is evaluated once, when the function is defined, and that that same “pre-computed” value is used for each call. This is especially important to understand when a default parameter is a mutable object, such as a list or a dictionary: if the function modifies the object (e.g. by appending an item to a list), the default value is in effect modified. This is generally not what was intended. A way around this is to use Noneas the default, and explicitly test for it in the body of the function, e.g.:
defwhats_on_the_telly(penguin=None): ifpenguin isNone: penguin =[] penguin.append("property of the zoo") returnpenguin