当前位置: 首页 > 面试题库 >

使用算术运算符将None与内置类型进行比较?

吕琪
2023-03-14
问题内容
Python 2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> None > 0
False
>>> None == 0
False
>>> None < 0
True
  • None使用算术运算符比较是否为内置类型(在这种情况下为整数)进行了定义?
  • 语言规范的前两个比较部分和第三个比较部分之间的区别(Python的规范-您一定是在开玩笑))还是CPython的实现细节?

问题答案:

您真正可以使用的唯一有意义的比较Noneif obj is None:(或if obj is not None:)。

出于各种原因,已从Python 3中删除了不同类型之间的比较-它们是常见的错误来源,并导致混乱。例如

>>> "3" < 4
False

在Python 3中,TypeError比较不同类型的值(例如strvs.int或anys vs.)时会得到a None

>>> None < 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: NoneType() < int()

(在试图确定两个值中的哪个较大/较小的意义上,我的意思是“比较”。对相等性的比较是可以的-False如果两个对象的类型不同,它将始终返回。)

我没有在文档中找到对此的参考,但是在学习Python,第4版中,Mark
Lutz在第204页上写道:

[…]比较不同类型的对象(例如,字符串和列表)的工作-
语言在不同类型之间定义了固定的顺序,这是确定性的,即使在美学上也不令人满意。也就是说,排序基于所涉及类型的名称:例如,所有整数都小于所有字符串,因为"int"小于
"str"



 类似资料:
  • 我在64位机器上的C程序出错。错误如下。为了完全理解错误,我尝试了程序的一些变体,以查看何时没有出现错误/警告。随着变化,我希望更好地理解它。 这些程序是用 错误:有符号和无符号整数表达式之间的比较 这个程序给了我错误。这就是我看到的模式。 sizeof返回size_t,它是一个无符号长整数。 len被提升为unsigned long int,作为常规算术的一部分,因此它可以从size_t中减去

  • 我想执行基本的算术运算,如加法,减法,乘法和除法,每个操作仅使用一个通用方法,用于包装类型,如,,...(不包括和)。 我尝试使用泛型类做如下(用于添加)。 它会发出编译时错误, 运算符不能应用于E,E 有没有办法使用这种通用版本来实现这种操作?

  • 问题内容: 我想对像,,…(不包括和)这样的包装器类型,每个操作仅使用一种通用方法执行基本的算术运算,例如加法,减法,乘法和除法。 我尝试使用泛型类执行以下操作(作为补充)。 它发出一个编译时错误, 运算符+不能应用于E,E 有没有办法使用这种通用版本来实现这种操作? 问题答案: 不,没有办法做到这一点,否则它将内置到Java中。类型系统不够强大,无法表达这种东西。

  • 运算符是处理数据的基本方法,用来从现有的值得到新的值。JavaScript 提供了多种运算符,覆盖了所有主要的运算。 概述 JavaScript 共提供10个算术运算符,用来完成基本的算术运算。 加法运算符:x + y 减法运算符: x - y 乘法运算符: x * y 除法运算符:x / y 指数运算符:x ** y 余数运算符:x % y 自增运算符:++x 或者 x++ 自减运算符:--x

  • 假设: 2的补码形式的32位有符号整数 true和false是值为1和0的整数 java运算符 你能实现像<代码>

  • 我想用JavaFx编程以下应用程序: 该程序生成用户必须解决的数学任务。通过复选框,您可以决定将出现哪些运算符(-*/)。如果选中所有4个选项,则每个操作员应使用一次。所以输出如下: 4 3-2*1/2 我的问题是,我不知道如何存储选定的运算符,以及如何在以后将它们作为工作运算符而不是字符或字符串插入程序中,因为程序最终必须将用户的解决方案与计算机计算的解决方案进行比较。 谢谢你的帮助和建议,我真