回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>答案等于<code>side effects</code>的定义。在</p>
<p>到目前为止,我还没有找到一个确切的答案。python医生说:
<code>Functional style discourages functions with side effects that modify internal state or make other changes that aren’t visible in the function’s return value.</code></p>
<p>什么是<code>modify internal state</code>和{<cd4>}?在</p>
<p>将变量绑定到对象(只是绑定,而不是修改)是否意味着没有副作用?e、 g.<code>a=1</code>或{<cd6>}或{<cd7>}。在</p>
<p>这里有4个函数。它们都没有副作用吗?为什么?在</p>
<p>注意,假设参数<code>n</code>必须是<code>int</code>对象。在</p>
<pre><code>def purefunc1(n):
def getn(n):
return [1,2,3,4,5][:n-1],[1,2,3,4,5][:n]
def addn(fir,sec,thd):
return fir+sec+thd
return addn(getn(n)[0],['HEY'],getn(n)[1])
def purefunc2(n):
def getn(n):
#bind
arr=[1,2,3,4,5]
return arr[:n-1],arr[:n]
def addn(fir=[],sec=[],thd=[]):
return fir+sec+thd
#bind
arg1,arg3=getn(n)
return addn(arg1,['HEY'],arg3)
def purefunc3(n):
arr=[1,2,3,4,5]
def getn(n):
#closure 'arr'
return arr[:n-1],arr[:n]
def addn(fir=[],sec=[],thd=[]):
return fir+sec+thd
#bind
arg1,arg3=getn(n)
return addn(arg1,['HEY'],arg3)
def purefunc4(n):
def arr():
return [1,2,3,4,5]
def getn(n):
#closure
return arr()[:n-1],arr()[:n]
def addn(fir=[],sec=[],thd=[]):
return fir+sec+thd
#bind
arg1,arg3=getn(n)
return addn(arg1,['HEY'],arg3)
print (purefunc1(3))
print (purefunc2(3))
print (purefunc3(3))
print (purefunc4(3))
</code></pre>
<p>我猜:<code>purefunc1</code>是没有边的影响。但是我不知道下面的purefunc*。在</p>
<p>输出为:</p>
^{pr2}$
<p>如果你问为什么会有这样奇怪的函数,答案是这只是为了方便。实际函数很复杂。但是如果您感兴趣,您可以<a href="http://www.cnblogs.com/xiangnan/p/3417296.html">click here</a>看看函数<code>ieval</code>是否没有副作用。在</p>
<p>提前谢谢大家。在</p>