值大小比较

2017-09-13  本文已影响0人  是阿离

问题

写了一个自信满满的函数

def cmp(x, y):
    return x == y

嗯 对,判断x跟y是否相等

a = '2'
b = 2
print cmp(a, b)

猜结果是啥……

知识

很简单的问题,结果为False
python中对值的比较是要看该值是哪种类型
python docs中对于不同类型的比较时这样定义的:

CPython implementation detail: Objects of different types except numbers are ordered by their type names; objects of the same types that don’t support proper comparison are ordered by their address.

根据自己当前用到的情况来看,不同类型的数值比较是没大有意义的,所以在对Numeric与String类型进行比较时,一般会将Numeric显式转化为String(str(num))。

Tips:

is==不同,is判断的是a对象是否就是b对象
值的类型可以通过type(a)来判断

python对象的大小比较规则:

1、数字通过相对大小进行比较
2、字符串按照字典顺序(编码顺序),一个字符接一个字符进行比较
3、列表和元组从左到右对每部分的内容进行比较
4、字典通过排序后的(键,值)列表进行比较,pyton3.0中不支持
5、数字混合类型pyton3.0中不支持,拼音。6中允许

参考文章

python对象的比较(is,==,对象大小比较>,<)
python基本数据类型大小比较

上一篇 下一篇

猜你喜欢

热点阅读