2024-04-28 19:05:22 发布
网友
我想把一个数学运算符和要比较的数值一起传递给一个函数。这是我的破密码:
def get_truth(inp,relate,cut): if inp print(relate) cut: return True else: return False
并称之为
get_truth(1.0,'>',0.0)
这应该是真的。
使用operator模块。它包含可以在python中使用的所有标准运算符。然后将运算符用作函数:
operator
import operator def get_truth(inp, op, cut): return op(inp, cut): get_truth(1.0, operator.gt, 0.0)
如果您真的想使用字符串作为运算符,那么按照@alecxe的建议创建一个从字符串到运算符函数的字典映射。
看看operator module:
import operator get_truth(1.0, operator.gt, 0.0) ... def get_truth(inp, relate, cut): return relate(inp, cut) # you don't actually need an if statement here
对字符串和operator函数进行映射。另外,您不需要if/else条件:
import operator def get_truth(inp, relate, cut): ops = {'>': operator.gt, '<': operator.lt, '>=': operator.ge, '<=': operator.le, '=': operator.eq} return ops[relate](inp, cut) print get_truth(1.0, '>', 0.0) # prints True print get_truth(1.0, '<', 0.0) # prints False print get_truth(1.0, '>=', 0.0) # prints True print get_truth(1.0, '<=', 0.0) # prints False print get_truth(1.0, '=', 0.0) # prints False
仅供参考,eval()是邪恶的:Is using eval in Python a bad practice?
eval()
使用
operator
模块。它包含可以在python中使用的所有标准运算符。然后将运算符用作函数:如果您真的想使用字符串作为运算符,那么按照@alecxe的建议创建一个从字符串到运算符函数的字典映射。
看看operator module:
对字符串和operator函数进行映射。另外,您不需要if/else条件:
仅供参考,
eval()
是邪恶的:Is using eval in Python a bad practice?相关问题 更多 >
编程相关推荐