在python中强制执行副作用

在python中强制执行副作用,python,functional-programming,code-analysis,Python,Functional Programming,Code Analysis,是否有一种工具可以让您将函数/方法注释为“纯”,然后分析代码以测试所述函数/方法是否没有副作用 在Python世界中,这个问题没有多大意义,因为对象在函数调用中有太多发言权 例如,如何判断以下函数是否为纯函数 def f(x): return x + 1 答案取决于x是什么: 虽然函数f看起来很纯,但是x上的add操作有增加s的副作用。您可以做的是检查f是否纯,假设type(x)==int。因为Python是动态类型化的,所以您必须手动添加类型注释。 >>> class

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

在Python世界中,这个问题没有多大意义,因为对象在函数调用中有太多发言权

例如,如何判断以下函数是否为纯函数

def f(x):
   return x + 1
答案取决于x是什么:

虽然函数f看起来很纯,但是x上的add操作有增加s的副作用。

您可以做的是检查
f
是否纯,假设
type(x)==int
。因为Python是动态类型化的,所以您必须手动添加类型注释。
>>> 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