<p>让我们试着重构一下原始代码:</p>
<pre><code>exrate = 100
sales = 0
def sim(var, min, max):
for var in range(min, max):
turnover = 1000 * (exrate/100) + sales
print(turnover)
</code></pre>
<p>首先,我们可以计算出sim卡中使用的功能,即:</p>
<pre><code>def f(exrate, sales):
return 1000 * (exrate/100) + sales
</code></pre>
<p>这个函数可以进一步简化<code>1000/100=10</code>:</p>
<pre><code>def f(exrate, sales):
return 10 * exrate + sales
</code></pre>
<p>您正在使用globals<code>exrate=100, sales=0</code>,但这不是一个好主意,所以让我们通过使用默认参数来摆脱这些globals:</p>
<pre><code>def f(exrate=100, sales=0):
return 10 * exrate + sales
</code></pre>
<p>现在,我们得到了一个数学函数,我们可以用它作为另一个函数的输入,它是一个只有一个职责的函数。你知道吗</p>
<p>假设我们想看看这个函数是如何相对于它的一个自变量<code>(exrate or sales)</code>演化的:</p>
<pre><code>for i in range(100, 1000, 100):
print(f(exrate=i))
for i in range(0, 1000, 200):
print(f(sales=i))
</code></pre>
<p>或两者兼有:</p>
<pre><code>for i in range(0, 1000, 200):
print(f(exrate=200, sales=i))
</code></pre>
<p>主要的想法是,当模拟某个东西时,最好将代码分为执行模拟的代码(在图形中绘制函数,在控制台上打印值,…)和模拟本身的代码(在本例中,是形式为<code>f(x)=ax+b</code>的<a href="https://en.wikipedia.org/wiki/Linear_function" rel="nofollow noreferrer">simple linear function</a>)</p>