为什么 list() == 1 给出结果,而 list() > 1 给出错误? [复制]

2024-05-24

即使这些比较没有意义,为什么

list() == 1 
#return: False

but

list() > 1
#return: '>' not supported between instances of 'list' and 'int'

对我来说,两个比较运算符应该具有相同的行为,但事实并非如此。顺便说一句,我正在使用 Python 3.7。


这种行为可以在object.c的实现 https://github.com/python/cpython/blob/3.8/Objects/object.c#L731-L747:

/* Perform a rich comparison, raising TypeError when the requested comparison
   operator is not supported. */
static PyObject *
do_richcompare(PyObject *v, PyObject *w, int op)
{
    // (omitted some code for brevity)

    /* If neither object implements it, provide a sensible default
       for == and !=, but raise an exception for ordering. */
    switch (op) {
    case Py_EQ:
        res = (v == w) ? Py_True : Py_False;
        break;
    case Py_NE:
        res = (v != w) ? Py_True : Py_False;
        break;
    default:
        PyErr_Format(PyExc_TypeError,
                     "'%s' not supported between instances of '%.100s' and '%.100s'",
                     opstrings[op],
                     v->ob_type->tp_name,
                     w->ob_type->tp_name);
        return NULL;
    }
    Py_INCREF(res);
    return res;
}

看着引入此更改的提交 https://github.com/python/cpython/commit/47b9ff6ba11fab4c90556357c437cb4feec1e853似乎有意决定只支持平等而不支持不同类型对象的比较。

引用提交消息中的摘要行:

大幅重组比较。不再有默认值ordering物体之间;只有默认的相等测试 (由仅等于其自身的对象定义)。

...此后消息继续描述基本原理(以及此更改的一些缺点)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 list() == 1 给出结果,而 list() > 1 给出错误? [复制] 的相关文章

  • 尽管极其懒惰,但如何在 Python 中模拟 IMAP 服务器?

    我很好奇是否有一种简单的方法来模拟 IMAP 服务器 例如imaplib模块 在Python中 without做很多工作 是否有预先存在的解决方案 理想情况下 我可以连接到现有的 IMAP 服务器 进行转储 并让模拟服务器在真实的邮箱 电子
  • 使用Python开发Web应用程序

    我一直在用 python 做一些工作 但这都是针对独立应用程序的 我很想知道 python 的任何分支是否支持 Web 开发 有人还会建议一个好的教程或网站吗 我可以从中学习一些使用 python 进行 Web 开发的基础知识 既然大家都说
  • 如何使用固定的 pandas 数据框进行动态 matplotlib 绘图?

    我有一个名为的数据框benchmark returns and strategy returns 两者具有相同的时间跨度 我想找到一种方法以漂亮的动画风格绘制数据点 以便它显示逐渐加载的所有点 我知道有一个matplotlib animat
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • Python 多处理示例不起作用

    我正在尝试学习如何使用multiprocessing但我无法让它发挥作用 这是代码文档 http docs python org 2 library multiprocessing html from multiprocessing imp
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • NameError:名称“urllib”未定义”

    CODE import networkx as net from urllib request import urlopen def read lj friends g name fetch the friend list from Liv
  • feedparser 在脚本运行期间失败,但无法在交互式 python 控制台中重现

    当我运行 eclipse 或在 iPython 中运行脚本时 它失败了 ascii codec can t decode byte 0xe2 in position 32 ordinal not in range 128 我不知道为什么 但
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代
  • 改变字典的哈希函数

    按照此question https stackoverflow com questions 37100390 towards understanding dictionaries 我们知道两个不同的字典 dict 1 and dict 2例

随机推荐

  • 使用 CSS 在 javaFX 中设置按钮样式

    我在使用 CSS 的 javaFX 中设置按钮样式时遇到问题 我使用 Intellij Idea IDE 我有 CSS css 文件 Button fx padding 8 15 15 15 fx background insets 0 0
  • 如何在 Windows 上应用差异补丁?

    有很多程序可以创建差异补丁 但我在尝试应用一个程序时遇到了很大的困难 我正在尝试分发补丁 但用户向我询问了如何应用该补丁 于是我尝试自己弄清楚 结果发现我毫无头绪 而且我能找到的大多数工具都是命令行的 我可以处理命令行 但是如果没有一个漂亮
  • IIS Express 安装目录在哪里?

    我最近开始了一个 ASP NET 教程 我想测试我用 WebMatrix 制作的页面 然而 有一个错误 Web 服务器配置为不列出该目录的内容 因此 它建议启用目录浏览并转到 IIS Express 安装目录并运行命令 那么它到底位于哪里呢
  • 将加载 gif 添加到简单脚本中

    我对 Javascript 真的很陌生 但我已经有了这个加载 url 内容的脚本 一切都工作正常 我使用按钮上的 onClick 方法调用 plannerSpin 函数 但是当这一切发生时 我将如何显示动画 gif var xmlHttp
  • 多行编辑文本和编辑文本的首字母大写

    你好 我正在尝试做EditText多行和第一个字母应该输入为大写 我正在使用android inputType textCapSentences 但设置为输入类型后textCapSentences它将第一个字母设置为大写但是EditText
  • MATLAB 中的逻辑数组与数值数组

    我正在比较两个二进制数组 我有一个数组 其中值可以是一或零 如果值相同则为 1 如果不同则为零 请注意 我正在做检查之外的其他事情 因此我们不需要进入矢量化或代码的性质 在 MATLAB 中使用数值数组和逻辑数组哪个更有效 Logical
  • 在reactjs中发生状态改变后调用函数

    我的问题是这样的 我有两个组件 第一个组件是图像裁剪器 第二个组件是我应该显示裁剪图像的组件 我面临的问题是我可以将裁剪后的图像传递到第二个组件 但我必须按下裁剪图像并传递到第二个组件的按钮两次 在第二次单击时 只有我的图像传递到第二个组件
  • 使用什么工具来可视化逻辑和物理查询计划?

    我很熟悉explain 还有 WebUI 我很好奇是否有任何工具可以生成优化前后逻辑 物理计划的树结构图像 也就是返回的信息explain 作为图像 PNG 或 JPG 之类的图片 我自己从未听说过 但您可以使用 Web UI 查看物理计划
  • 从另一个线程调用 show 后 Windows 窗体窗体挂起

    我的应用程序有一些异步运行的网络代码 我附加了一些在没有连接到服务器时抛出的事件 并且在发生这种情况时我正在创建一些 操作失败 表单 问题是我的表单在创建后挂起 我读到了相关内容 并尝试这样做 public void ShowView if
  • Pandas date_range 为六个月值

    我正在尝试创建一个日期范围 该范围从特定日期开始以六个月为增量 因此 如果 end date 是 2020 01 15 那么在此之前的日期将是 2019 07 15 然后是 2019 01 15 依此类推 pandas 接受 6M 作为 d
  • 无法在java中同时打印字符串和布尔值

    public class Main public static void main String args final String man1 All man are created equal 27 final String man2 A
  • 使用 SOA、UoW、Repository、DataContext 和多个数据库设计多租户应用程序

    首先 我对这篇文章的篇幅表示歉意 但我想提供尽可能多的细节 以增加得到答案的机会 提前致谢 我正在向集成来自多个数据库的数据的现有应用程序添加新功能 简而言之 它允许客户和 或其会计师访问和更新有关其位置的财务信息 该应用程序有 3 层 其
  • 使用 npm 安装 JS 包并使用 webpack laravel mix 进行编译

    我是 Laravel 新手 正在关注 Laravel 5 4 的 Laracast 教程我了解了 Laravel mix 以及如何使用 Webpack Laravel Mix 工具编译我们的资源 所以我尝试添加一个 JavaScript 包
  • 如何仅在 PHP 中使用 str_replace() 删除文本一定次数?

    我试图从字符串中删除单词 John 一定次数 我在 php 手册上读到 str replace 除了第四个参数 count 所以我想可以用来指定应该删除多少个搜索实例 但事实似乎并非如此 因为以下情况 string Hello John h
  • 如何在iPhone上读入并解析XML文件?

    我有一个返回 XML 文件的 Web 服务器 可以说http www foo bar foo php wantXML 1 http www foo bar foo php wantXML 1 我如何从服务器获取该文件 然后解析它以访问数据
  • “警告:'github.com' 的 ECDSA 主机密钥与 IP 地址的密钥不同”问题

    我不知道发生了什么 但有一天 当我起床时git push我的改变是 Warning the ECDSA host key for github com differs from the key for the IP address 140
  • 使用 JavaScript 捕获 iPhone 虚拟键盘中的“完成”按钮点击

    我想知道是否有一种方法可以使用 JavaScript 捕获 iPhone 虚拟键盘的完成按钮事件 基本上 我只是希望能够在用户单击 完成 时调用 JS 函数 我无法跟踪单击的 完成 按钮 它没有注册任何clicks or keypresse
  • Powershell:当文件名包含字符 [ ] 时,移动项目不起作用

    关于使用 PowerShell 移动项目的简单问题 有谁知道为什么当文件名包含 或 字符时以下脚本不起作用 前任 文件1 VT txt ls j foreach itemName Name Replace destination ls wh
  • 在 Swift 中将时间数组从 24 小时转换为 12 小时

    我有一个像这样的数组 arrayTimes 16 00 16 30 17 00 17 30 18 00 18 30 我想将数组从 24 小时转换为 12 小时 这是我到目前为止所拥有的 它转换数组中的第一个数字 我遗漏了一些东西 但我无法解
  • 为什么 list() == 1 给出结果,而 list() > 1 给出错误? [复制]

    这个问题在这里已经有答案了 即使这些比较没有意义 为什么 list 1 return False but list gt 1 return gt not supported between instances of list and int