在python中强制执行副作用

时间:2012-05-09 04:36:33

标签: python functional-programming code-analysis

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

1 个答案:

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