我知道,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)
。
我真的不确定。
答案 0 :(得分:3)
如果您对简单的算术运算感兴趣,可以使用运算符
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
函数
答案 1 :(得分:1)
我的想法是thread。您必须已经阅读过它,但是......在您的情况下,您想知道是否这可能对通用编程有用。
而且......不幸的是,答案是:如果你不能证明至少一个良好的用例,它就不存在。
如果你真的相信这样一个泛型编程的用例存在,那么找一个,来告诉我们(但我理解这个问题可能会被认为是一个有趣的组,超过作为个人,但是,您可能想考虑去其他网站。