假设我有两个 Python 函数 f
和 g
:
def f(x):
y = x**2 + 1
return y
def g(x):
a = x**2
b = a + 1
return b
这两个函数在功能上是明显等价的(都返回
x**2+1
)。我的“功能等价”定义如下:
如果两个函数
f
和 g
在相同的输入下总是产生相同的输出,则 f
和 g
是功能等价的。此外,假设
f
和 g
中没有全局变量。是否有可能自动确定(无需人工检查)Python 函数
f
和 g
是否功能等价?
f
和g
是否会编译成相同的字节码吗? - appleciderdis.dis(myfunction)
检查字节码。如果两个函数编译成相同的字节码,则它们必须在功能上等效(至少根据编译器)。然而,正如我上面提到的和 Slater 注意到的那样,可能会出现假阴性 - 对于两个在功能上等效的函数存在不同的字节码。 - TigerhawkT3