【发布时间】:2012-05-09 04:36:33
【问题描述】:
是否有一种工具可以让您将函数/方法注释为“纯”,然后分析代码以测试所述函数/方法是否无副作用?
【问题讨论】:
标签: python functional-programming code-analysis
是否有一种工具可以让您将函数/方法注释为“纯”,然后分析代码以测试所述函数/方法是否无副作用?
【问题讨论】:
标签: python functional-programming code-analysis
在 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 的副作用。
【讨论】:
f是否是纯的假设type(x) == int。由于 Python 是动态类型的,因此您必须手动添加类型注释。