答案等于side effects的定义。在
到目前为止,我还没有找到一个确切的答案。python医生说:
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.
什么是modify internal state和{}?在
将变量绑定到对象(只是绑定,而不是修改)是否意味着没有副作用?e、 g.a=1或{}或{}。在
这里有4个函数。它们都没有副作用吗?为什么?在
注意,假设参数n必须是int对象。在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))
我猜:purefunc1是没有边的影响。但是我不知道下面的purefunc*。在
输出为:
^{pr2}$
如果你问为什么会有这样奇怪的函数,答案是这只是为了方便。实际函数很复杂。但是如果您感兴趣,您可以click here看看函数ieval是否没有副作用。在
提前谢谢大家。在