Python 比较两个值

Python 比较两个值,python,testing,compare,Python,Testing,Compare,假设我有两个变量: foo1 = 2 foo2 = x # Actual value unknown foo1将始终相同(2),但foo2可以从x中获取任何整数值 现在,假设我想比较foo1和foo2(找出它是更小、更大还是相同大小)。我可以使用==测试它们是否相同: foo1 == foo2 # False 所以foo1不等于foo2 接下来,我看foo1是否比更大: foo1 > foo2 # False 所以我们现在知道foo1比foo2小 可以将其放入一个方便的函数中以比较

假设我有两个变量:

foo1 = 2
foo2 = x # Actual value unknown
foo1
将始终相同(
2
),但
foo2
可以从
x
中获取任何整数值

现在,假设我想比较
foo1
foo2
(找出它是更小、更大还是相同大小)。我可以使用
==
测试它们是否相同:

foo1 == foo2 # False
所以
foo1
不等于
foo2

接下来,我看
foo1
是否比
更大:

foo1 > foo2 # False 
所以我们现在知道
foo1
foo2

可以将其放入一个方便的函数中以比较值:

def cmp(arg1, arg2):

    if arg1 == arg2:
        return 0
    elif arg1 > arg2:
        return 1
    elif arg1 < arg2:
        return -1


print(cmp(2, 3))
1
如果
$foo1
大于
$foo2

0
如果
$foo1
$foo2
相等

-1
如果
$foo1
低于
$foo2

这与我在上面提到的Python函数相同

请注意,我并不是一个真正的Perl程序员,但我包含了这一点,以表明其他语言具有比较功能



创建一个函数是非常好的,工作也很好,但是是否有一些(类似于Perl使用的)内置函数/运算符可以为我比较这两个值(而不是自己构建)?

Python2有。我们在Python3中去掉了它,以供参考。其他一些语言,如PHP、Ruby和C++20,都有这种功能。Python3文档中有您可能会发现有用的功能。我真的不明白为什么您希望
cmp
超过显式比较运算符。当然,无论如何,您都需要测试
cmp
的结果才能对其进行任何有用的操作。如果这是绝对必要的,那么使用
cmp=lambda x,y:(x>y)-(x
A)这就是perl的说法。最小化代码并不是这里最重要的事情。比较运算符效率更高,可读性更强。B) 它甚至都不这样做。我真的想不出会出现这种情况。你能提供一个吗?
my $foo1 = 2;
my $foo2 = $x;

$foo1 <=> $foo2;