是否有一个工具可以让您将函数/方法注释为“纯”,然后分析代码以测试所述函数/方法是否无副作用?
答案 0 :(得分:9)
在Python世界中,问题没有多大意义,因为对象对函数调用中发生的事情有如此多的发言权。
例如,您如何判断以下函数是否纯粹?
def f(x):
return x + 1
答案取决于 x 是什么:
>>> class A(int):
def __add__(self, other):
global s
s += 1
return int.__add__(self, other)
>>> def f(x):
return x + 1
>>> s = 0
>>> f(A(1))
2
>>> s
1
虽然函数 f 看起来很纯粹,但 x 上的添加操作会产生增加 s 的副作用。