<p>基本上,我想知道,如果可能的话,我是否应该在功能上尽量避免副作用,或者副作用在某些情况下是否可以接受。我想要一个<code>pop</code>的函数,它从字典返回一个键,我很好奇这个函数是否应该只返回键:</p>
<pre><code>def popkey(d):
k, v = d.popitem()
return k
mykey = popkey(d)
</code></pre>
<p>或者如果还应返回修改后的词典:</p>
<pre><code>def popkey(d):
k, v = d.popitem()
return k, d
mykey, d = popkey(d)
</code></pre>
<p>更具体地说,我有下面这样的东西,我需要继续查找字典,所以我想<code>pop</code>键,因为它们与列表中的元素配对</p>
<pre><code>def pop_nearest(d, pt):
"""Pops the key in `d` which is nearest to pt."""
to_pop = min(d.iterkeys(), key=lambda a: abs(a - pt))
d.pop(to_pop)
pts = [1,3,5,7,9]
for pt in pts:
nearest_pt = pop_nearest(d, pt)
# do some other stuff
</code></pre>