Python 为什么'n1 if eval('n1<;=n2";)else n2'总是返回'n1'?

Python 为什么'n1 if eval('n1<;=n2";)else n2'总是返回'n1'?,python,eval,Python,Eval,我试图编写一个函数smaller_num(n1,n2),它返回两个参数的较小值。在下面的代码段中,虽然我希望函数返回“16”,但实际上由于某种原因返回了“1500”。逻辑有什么问题 def smaller_num(n1, n2): return n1 if eval("n1<=n2") else n2 print(smaller_num("1500", "16")) def较小_num(n1,n2): 如果eval(“n1您对eval()的使用是多余的,请返回n1。请简单尝试

我试图编写一个函数
smaller_num(n1,n2)
,它返回两个参数的较小值。在下面的代码段中,虽然我希望函数返回
“16”
,但实际上由于某种原因返回了
“1500”
。逻辑有什么问题

def smaller_num(n1, n2):
    return  n1 if eval("n1<=n2") else n2
print(smaller_num("1500", "16"))
def较小_num(n1,n2):
如果eval(“n1您对
eval()
的使用是多余的,请返回n1。请简单尝试

def较小_num(n1,n2):

如果n1
“n1
1500
大于
16
,但
“1500”
“16”,则返回n1
是字符串,而不是数字。字符串是按字典顺序进行比较的。你为什么还要使用
eval
呢?如果你想写一个函数来返回两个输入中较小的一个,你不需要
eval
return min(n1,n2)
或者
return n1如果n1
就可以了。