擅长:python、mysql、java
<p>您遇到了一个经典的绑定时间问题,@Mike的解决方案是典型的。一个好的选择是编写一个高阶函数:</p>
<pre><code>def makecall(kwargs):
def callit():
return a_function(**kwargs)
return callit
</code></pre>
<p>并在循环中使用<code>commands.append(makecall(kwargs))</code>。这两种解决方案的工作原理是相同的(在我的例子中,通过传递一个普通的参数,在@Mike's中是一个命名参数的默认值)来强制早期绑定;选择只是一个风格或优雅的问题(我,而我在超简单的情况下容忍<code>lambda</code>,只要有最细微的并发症介入,我非常喜欢好的旧的<code>def</code>;-)。在</p>