在python中从字符串获取if子句
我在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)):
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