在python中从字符串获取if子句

在python中从字符串获取if子句,python,string,conditional-statements,Python,String,Conditional Statements,我在python中遇到了一个问题。我想从作为函数参数给定的字符串中创建一个if子句。它看起来像这样: def函数(foo) 如果(foo): 打印(“条”) test=“5>10” 功能(测试) 我不希望看到任何打印内容,因为5>10是假的。但实际上它是在打印“bar”。有没有一种方法可以在不询问(foo.split(“”[2]==“>”)是否做了什么事情的情况下正确处理此问题使用eval() Ex: def function(foo): if(eval(foo)):

我在python中遇到了一个问题。我想从作为函数参数给定的字符串中创建一个if子句。它看起来像这样:

def函数(foo)
如果(foo):
打印(“条”)
test=“5>10”
功能(测试)
我不希望看到任何打印内容,因为5>10是假的。但实际上它是在打印“bar”。有没有一种方法可以在不询问(foo.split(“”[2]==“>”)是否做了什么事情的情况下正确处理此问题

使用
eval()

Ex:

def function(foo):
    if(eval(foo)):
        print("bar")

test = "5 > 10"
function(test)

您可以
eval
使用
foo
参数:

def function(foo):
   if eval(foo):
     print("bar")
“if”语句接受表达式并对其求值。如果数值表达式的计算值为0,布尔表达式的计算值为“false”,字符串的计算值为NULL,则将其视为false表达式,并且不会执行“then”块。否则,表达式为真

在您的例子中,字符串的求值总是true,因为它不是NULL。表达式5>10为“false”,但字符串“5>10”为“true”

如果要计算字符串,应使用eval:

function(eval('5 >10'))

看起来您需要
eval()
另请参见。即使它更详细,如果foo.split(“”[1]==“>”您在问题中提到的内容,执行
会更安全。谢谢!使用eval时,其工作正常=D