擅长:python、mysql、java
<p>在Python中,默认值有一个不明显的特性-它们每次都代表同一个对象,当使用可变值作为默认值时,这会导致令人惊讶的行为:</p>
<pre><code>def add(value, l=[]):
l.append(value)
return l
add(1) # [1]
add(2) # [1, 2]
</code></pre>
<p>为了不落入这个陷阱,不要以这种方式使用列表或任何其他可变值。如果需要将某些内容初始化为空列表,请在函数/方法体中执行:</p>
<pre><code>def __init__(self, odometer=0, leg_miles=None, leg_gas=None):
self.odometer = odometer
self.leg_miles = leg_miles or []
self.leg_gas = leg_gas or []
</code></pre>