Python比较两函数返回值始终判定相等的原因及解决方法
异常判定原因
两个函数始终被判定相等,核心来自Python的函数返回规则:
- Python语法明确规定:如果函数内没有写显式的
return语句返回值,函数执行结束后默认会返回None - 你写的
test1()、test2()仅在函数内部给局部变量a、b赋值,并没有把这两个值返回给外部调用逻辑,所以不管你给a、b设置多大差异的数值,外部调用两个函数拿到的返回值全都是None,两个None做相等判断自然永远为真,就会一直打印二者相等的提示。 - 额外提示:你贴出的示例代码里print语句用的是中文全角单引号,直接运行会触发语法错误,实际编写时需要替换为英文半角引号。
修改方法
只需要给两个函数加上return语句,把需要比较的数值返回即可,修改后的可正常运行代码如下:
def test1(): a = 1 return a def test2(): b = 2 return b if test1() != test2(): print('test1 not equal to test2') else: print('test1 equal to test2')
运行上述代码就会正确输出test1 not equal to test2的结果。你之前单独写的两行test1()、test2()调用没有接收返回值,对后续比较逻辑没有任何作用,可以直接删除。
内容的提问来源于stack exchange,提问作者Seura
相关产品推荐
相关产品推荐

