使用 eval 的通用函数有什么用吗?

Can a generic function using eval be of any use?

我知道,eval() 邪恶的

我相信还有更好的方法。

这只是接近问题的一般问题。

您如何看待使用 eval() 来使函数更通用?

在一个非常简单的示例中,它可能如下所示:

def generic_eval_func(a, operator, b):
    return eval('a '+operator+' b')    

if __name__ == '__main__':
    a = 6
    b = 7
    print generic_eval_func(a, '<', b)

我还没有使用过这样的功能。

但在思考如何使函数更通用时,我的脑海中时不时会浮现出这个想法。

不是有两个函数 subtract(a,b) add(a, b) 而是有一个函数 operation(a, '+', b)operation(a, '-', b)operation(a, '<', b).

我真的不确定。

如果你对简单的算术运算感兴趣,可以使用运算符

from functools import reduce  # Python 3
import operator

print(reduce(operator.__sub__, (6,7)) )
print(reduce(operator.__add__, [6,7]) ) # you can pass a list as well.

对于像 < 这样的其他运算符,我想你最好使用 lambda 函数

我的想法是这样 thread。您一定已经读过它,但是...在您的情况下,您想知道是否存在它对泛型编程有用的情况。

并且......不幸的是,答案是:如果你不能证明至少 一个 好的用例,它就不存在。

如果您真的相信存在这样一个泛型编程的用例,那么找到一个,然后向我们展示(但我理解这个问题可能很有趣,作为一个 group,而不是作为一个 个人 ,但是,你可能要考虑去另一个网站)。