为什么 Python 3 不向后兼容? [关闭]

2023-11-29

我了解到 Python 3 不向后兼容。

它不会影响很多使用旧版本Python的应用程序吗?

Python 3 的开发者怎么会不认为绝对有必要使其向后兼容呢?


Python 3.0 向后兼容吗?为什么?

Python 3.0 实现了很多非常有用的功能,但破坏了向后兼容性。它是有意这样做的,因此即使 Python 2.x 代码在 Python 3.x 下可能无法正常工作,也可以实现出色的功能。

所以,基本上,Python 3.0 故意不向后兼容. 因此,您可以从一组全新的功能中受益。甚至被称为“蟒蛇3000" or "Python 3K".

From "Python 3.0 的新增功能“ (可用的here):

Python 3.0 与 2.6 相比。 Python 3.0,也称为“Python 3000”或“Py3K”,是第一个故意向后不兼容的 Python 版本。与典型版本相比,其中的更改更多,而且对所有 Python 用户来说也更重要。然而,在消化了这些变化之后,你会发现Python实际上并没有改变那么多——总的来说,我们主要是修复众所周知的烦恼和缺陷,并删除许多旧的东西.

Python 3.0 中的新功能打破了向后兼容性

一些最显着的功能可能被认为破坏了向后兼容性,但同时改进了语言,包括:

  • print现在是一个函数,而不是语句,将其用作语句将导致错误,
  • 各种函数和方法现在返回迭代器或视图而不是列表,这使得迭代其结果更加节省内存(您不需要将整个结果列表存储在内存中),
  • cmp排序函数的参数,例如sorted() and list.sort()不再受支持,应替换为key争论,
  • int现在与 Python 2.x 相同long,这使得数字处理变得不那么复杂,
  • /默认情况下,运算符现在是真正除法的运算符(您仍然可以使用//用于楼层划分),
  • Python 3.x 中的文本现在默认为 Unicode,
  • True, False and None现在是保留字(所以你不能做True, False = False, True,
  • 改变了元类的用法,
  • 例外情况需要派生自BaseException,必须以与 Python 2.x 不同的方式引发和捕获,
  • 以及更多其他更改,使 Python 更具可读性、一致性和明确性,
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Python 3 不向后兼容? [关闭] 的相关文章

  • Python、Tkinter、更改标签颜色

    有没有一种简单的方法来更改按钮中文本的颜色 I use button text input text here 更改按下后按钮文本的内容 是否存在类似的颜色变化 button color red Use the foreground设置按钮
  • InterfaceError:连接已关闭(使用 django + celery + Scrapy)

    当我在 Celery 任务中使用 Scrapy 解析函数 有时可能需要 10 分钟 时 我得到了这个信息 我用 姜戈 1 6 5 django celery 3 1 16 芹菜 3 1 16 psycopg2 2 5 5 我也使用了psyc
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • Flask 和 uWSGI - 无法加载应用程序 0 (mountpoint='')(找不到可调用或导入错误)

    当我尝试使用 uWSGI 启动 Flask 时 出现以下错误 我是这样开始的 gt cd gt root localhost uwsgi socket 127 0 0 1 6000 file path to folder run py ca
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • 从 scikit-learn 导入 make_blobs [重复]

    这个问题在这里已经有答案了 我收到下一个警告 D Programming Python ML venv lib site packages sklearn utils deprecation py 77 DeprecationWarning
  • 在循环中每次迭代开始时将变量重新分配给原始值(在循环之前定义)

    在Python中 你使用 在每次迭代开始时将变量重新分配给原始值 在循环之前定义 时 也就是说 original 1D o o o for i in range 0 3 new original 1D revert back to orig
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 改变字典的哈希函数

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

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • uwp InkCanvas 将斯托克斯保存为 svg

    我正在尝试将 InkCanvas InkStorkes 保存为 SVG 我发现之前的一个问题适用于 Wpf 但我无法让它与 uwp 一起使用 Wpf InkCanvas 将斯托克斯保存为 svg 我对其进行了一些更改 但遇到了 GetGro
  • 如何将 simulink 文件转换为 XML

    我需要将 Simulink 文件 mdl 转换为 XML 文件 经过任何搜索后 我没有找到任何内容来帮助我解决此问题 您知道 Java 中的某种方法或现成的解决方案吗 从 R2008b 开始 您可以使用以下命令将 mdl 文件导出到 xml
  • Angular 表单 - 访问子组件模板中的 FormArray

    我有一个需要几个组件FormControls and FormArrays 作为输入 我正在访问FormControl来自子组件的 s 如下所示 formControl control 这工作得很好 但我找不到一种方法来做同样的事情Form
  • 将 dd/mm/yy 和 dd/mm/yyyy 转换为日期

    我有一些字符向量 其中包含各种格式的日期 如下所示 dates lt c 23 11 12 20 10 2012 22 10 2012 23 11 12 我想将它们转换为日期 我已经尝试了 lubridate 包中非常好的 dmy 但这不起
  • 手动对整数列表进行排序

    我对编程还很陌生 我只学习了几个星期的Python 最近有人给我一个练习 要求我生成一个整数列表 然后在单独的列表中手动将数字从最低到最高排序 import random unordered list range 10 ordered lo
  • 虚拟 COM 端口还是使用原始端点?

    我正在使用 USB 控制器和代码示例在微控制器中开发软件来实现虚拟 COM 端口 它的实现是一个来回传输数据的设备 我正在考虑使用 2 个批量端点 在我的计算机中使用 libusb 来读取和写入它们 虚拟 COM 的优点是不需要 libus
  • 通过 Outlook 在 R 中发送电子邮件 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 如何在 R 中通过 Outlook 发送电子邮件 所有的例子sendmailR使用 Gmail 服务器 但我不能这样做 您可以使用RDCOMClient包从 R 中访问 COM
  • SQL Server LocalDB 实例无法启动(自动)

    我有一个 WPF 应用程序连接到 SQL Server 2014 Express LocalDB 即本地数据库 mdf数据库文件 该应用程序使用 Entity Framework Core 库版本 7 0 0 rc1 final 这是我正在
  • JsonConstructor 在 IEnumerable 属性上失败?

    因此 使用访问器设置可枚举效果非常好 public class SetEnumerableWithAccessor public IEnumerable
  • React 中使用鼠标滚轮缩放图像

    所以我正在尝试重制这个版本 取自并修改自这个帖子 在 React 中使用鼠标滚轮进行图像缩放 问题是 即使在 React 中使用相同的数学和逻辑 它也不能完美地工作 我不知道为什么 图像似乎没有在光标所在的位置缩放 这是我的组件 impor
  • 如何使用saxon内置目录功能

    我下载了 SaxonHE9 4 0 6J 并希望在 CLI 上处理 XHTML 然而 Saxon 尝试从 W3C 加载 DTD 并且每个简单命令都需要花费太多时间 我有 xml 目录 我通过设置指向目录文件的 env 变量成功地将其与 xm
  • vec_sld 字节序敏感吗?

    我正在开发具有核心加密功能的 PowerPC 机器 我在使用内置函数将 AES 密钥扩展从大端移植到小端时遇到问题 大端有效 但小端无效 下面的算法是一个片段中呈现的IBM 博客文章 我认为我已将问题隔离到下面的第 2 行 typedef
  • 防止Oracle中重复插入数据

    我有表 COBA 有 3 个字段 它们是 NOMER NAMA KETERANGAN 表中存在这样的数据 我想向该表插入另一个值 但是如何防止在 Oracle 中重复插入查询数据 我尝试使用 WHERE NOT EXIST 这是我的查询 I
  • 将鞋子集成到 Aptana Studio RadRails 中

    我怎样才能运行我的Carpet直接从 Aptana Studio 与 RadRails 应用程序 将 Shoes exe 设置为 VM 解释器将不起作用 如果 Ruby 项目中有该文件 则可以执行以下操作 转到运行 gt 外部工具 gt 外
  • 如何同时打开 Pygame 窗口和 Tkinter 窗口?

    我正在使用 Pygame 模块制作一个简单的游戏 我需要在 Pygame 窗口旁边打开 Tkinter 窗口 每当我尝试打开两个窗口时 第二个窗口只有在我杀死第一个窗口后才会打开 现在 我能想到的唯一解决方案是使用多线程 但是 我无法实施它
  • ld:在 MacOS / nasm 上找不到架构 x86_64 的符号

    我是汇编编程新手 所以我提前道歉 我在链接第一个时遇到问题Hello world汇编程序在MacOS and nasm section data text db Hello World 10 section text global star
  • 在django中删除带有表单的对象

    我正在显示一张桌子 每行都应该有一个删除按钮 用于从表中删除元素 我的问题是 我不确定如何将元素的 id 传递给视图 html for post in posts div h3 Zuletzt ausgew hlt h3 p publish
  • Rails Asset Pipeline - 错误的指纹

    我的 Rails 4 应用程序有new html erb其中引用了form html erb app assets templates jobs new html erb
  • c 中对“getline”的未定义引用

    我正在学习在 C 编程中使用 getline 并尝试了以下代码http crasseux com books ctutorial getline html include
  • 为什么 Python 3 不向后兼容? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我了解到 Python 3