我想知道是否可以这样做?
s = "> 4"
if 5 s:
print("Yes it is.")
答案 0 :(得分:3)
您想要eval
。
s = "> 4"
if eval("5"+s):
print("Yes it is.")
Here是关于eval
的文档。
请注意,如果您不确切知道输入字符串中的内容,eval
非常不安全。请谨慎使用。
答案 1 :(得分:3)
使用eval()
可以轻松完成此操作。但是,eval()
为pretty dangerous,最好避免使用。
有关其他想法,请参阅Safe expression parser in Python
我认为最好的方法取决于s
的来源:
1)如果是用户输入,您当然不想使用eval()
。表达式解析器可能就是这样。
2)如果以编程方式设置s
,您可能最好将其转换为函数:
pred = lambda x:x > 4
if pred(5):
print("Yes it is.")
答案 2 :(得分:3)
假设您真正想要做的是存储比较“> 4”并在某处使用它,我建议如下:
import operator
class Comparison(object):
def __init__(self, operator, value):
self.operator = operator
self.value = value
def apply(self, value):
return self.operator(value, self.value)
s = Comparison(operator.gt, 4)
if s.apply(5):
print("Yes it is.")