为什么python2.x中int(50)<str(5)?

2024-09-28 03:24:53 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python3中,int(50)<'2'会导致TypeError,而且应该是这样。然而,在python2.x中,int(50)<'2'返回True(其他数字格式也是如此,但是{}在py2和py3中都存在)。那么,我的问题有几个部分:

  1. 为什么Python2.x(<;3?)允许这种行为吗?在
  • (谁认为让这件事开始是个好主意在
  • 一个int小于一个str是什么意思?
    • {{cd9}是指
    • 有没有一些不那么明显的二进制格式?在
  • 在这方面,'5'和{}之间有区别吗?在

  • Tags: lttrue格式二进制py3数字python3主意
    2条回答

    (谁认为让这件事开始是个好主意在

    我可以想象,原因可能是允许不同类型的对象存储在树状结构中,这种结构在内部使用比较。在

    它的工作原理是这样的1。在

    >>> float() == long() == int() < dict() < list() < str() < tuple()
    True
    

    数字比容器小。数字类型将转换为通用类型,并根据其数值进行比较。容器按名称的字母值进行比较。2

    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.

    不同内置类型的对象按其类型名称的字母顺序进行比较int以“i”开头,strs开头,因此任何int都比任何{}小。。在

    1. 我不知道。
      • 醉酒的主人。在
    2. 这意味着在内置类型上引入了形式化的顺序。
      • 它指的是任意命令。在
      • 没有
    3. 不需要。字符串和unicode对象在这方面是相同的。试试看。在

    回应关于long < int的评论

    ^{pr2}$

    不过,您可能是指那些类型的值,在这种情况下,数字比较适用。在

    1所有这些都是在Python2.6.5上实现的

    感谢克朗帮我解决了这个问题。我以前从没想过要把一个数字和一个dict作比较,而数字的比较是如此明显,很容易被忽视的事情之一。

    相关问题 更多 >

      热门问题