6

是否有一种工具可以让您将函数/方法注释为“纯”,然后分析代码以测试所述函数/方法是否无副作用?

4

1 回答 1

11

在 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的副作用。

于 2012-05-09T04:45:06.963 回答