[python基础] python 2与python 3之间的区别 —— 不同数据类型间的运算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[python基础] python 2与python 3之间的区别 —— 不同数据类型间的运算相关的知识,希望对你有一定的参考价值。

python 3的更新中,不再支持 str 和 int 直接判定

>>> a = 10
>>> a > 9
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    a > 9
TypeError: ‘>‘ not supported between instances of ‘str‘ and ‘int‘

 

python 2中

>>> a = 1
>>> a > 10
True
>>> a > 100000
True

手册中的描述

...the choice whether one object is considered smaller or larger than another one is made arbitrarily but consistently

  • 任何两个对象都可以比较
  • 相同类型的对象(实例),如果是数字型(int/float/long/complex),则按照简单的大小来比较;如果是非数字型,且类(型)中定义了__cmp__(含__gt__,__lt__等)则按照__cmp__来比较,否则按照地址(id)来比较
  • 不同类型的对象(实例),如果其中一个比较对象是数字型(int/float/long/complex等),则数字型的对象<其它非数字型的对象;如果两个都是非数字型的对象,则按照类型名的顺序比较,如{} < "abc"(按照"dict" < "str"),而"abc" > [1,2], "abc" < (1,2)。
  • 对于自定义的类(型)实例,如果继承自基本类型,则按照基本类型的规则比较(1-3)。否则,old-style class < new-style class, new-style class之间按照类型名顺序比较,old-style class之间按照地址进行比较
  • bool类型是int的子类,且True=1, False=0,比较时按照1-4来比较,如True > -1, True < 4.2, True < "abc"等

 

也就是python 2中的数字型对象 < 其他非数字型的对象,字符串>数字 的表达式会始终返回True

 

这么看起来确实3比较严谨一些啊,避免一些可能出现的问题

以上是关于[python基础] python 2与python 3之间的区别 —— 不同数据类型间的运算的主要内容,如果未能解决你的问题,请参考以下文章

Pytho怎样自学?

Pytho核心编程笔记——第三章

Pytho基础要点:7种复合语句在编写时要遵循的语法风格

Python 学习第一天--基础知识,列表

Python基础语法

python基础