擅长:python、mysql、java
<p>试着在一些有意义的部分拆分这样的一行代码。你知道吗</p>
<pre><code>def dictuse1(operator, x, y):
# Stores mapping from operator names (strings)
# to op implementations (functions == lambdas)
optable = {
'add': lambda: x + y,
'sub': lambda: x - y,
'mul': lambda: x * y,
'div': lambda: x / y,
}
# Define a default op
noop = lambda: None
# Take the function by op name
op = optable.get(operator, noop)
# Exectute it and return a returning value of that function.
return op() # remove () and you have a dictuse2 here.
</code></pre>
<p><code>dictuse1</code>和<code>dictuse2</code>之间唯一的区别是,最后一个返回函数而不是调用该函数的结果。你知道吗</p>