2

我想知道是否可以这样做?

s = "> 4"
if 5 s:
    print("Yes it is.")
4

3 回答 3

3

你想要eval

s = "> 4"
if eval("5"+s):
    print("Yes it is.")

是关于eval.

请注意,如果您不知道输入字符串中的确切内容,eval则非常不安全。谨慎使用。

于 2013-03-06T07:36:52.387 回答
3

这可以很容易地使用eval(). 但是,eval()这是非常危险的,最好避免。

有关其他想法,请参阅Python 中的安全表达式解析器

我认为最好的方法取决于s来自哪里:

1)如果是用户输入,你当然不想使用eval(). 表达式解析器可能是要走的路。

2)如果s以编程方式设置,则最好将其转换为函数:

pred = lambda x:x > 4
if pred(5):
    print("Yes it is.")
于 2013-03-06T07:38:30.387 回答
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.")
于 2013-03-06T07:46:30.853 回答