编写交叉兼容的 Python 2/3:__future__、6 和 future.utils 之间的区别?

2024-01-06

我正在编写交叉兼容的 Python 2 和 3 代码,并从中得到一些帮助备忘单 http://python-future.org/compatible_idioms.html。我注意到有不同的包和模块可以帮助做到这一点:future包(例如future.utils等),six包,以及内置的__future__ module.

使用这些包时有什么需要注意的区别吗?我应该混合和匹配它们,还是可以只用其中之一编写完全交叉兼容的代码?


在Python 2-3兼容性方面:

__future__- 是 python 中的内置模块,允许您在 python 版本中使用可选功能(而不是强制功能)。例如,unicode_literals是可选的python2.7但成为强制性的python3.0.

six- 主要重命名模块/函数以产生更高的兼容性python2 to python3,但实际上并不向后移植(或前向移植)功能。 python 版本也支持它>=2.4.

future- 更现代,仅支持python>=2.6,>=3.3,并且功能更加丰富。

似乎有一些协议 https://docs.python.org/3/howto/pyporting.html that future优先于six如果你可以放弃对旧版本 python 的支持。

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

编写交叉兼容的 Python 2/3:__future__、6 和 future.utils 之间的区别? 的相关文章

  • Django 模型在模板中不可迭代

    我试图迭代模型以获取列表中的第一个图像 但它给了我错误 即模型不可迭代 以下是我的模型和模板的代码 我只需要获取与单个产品相关的列表中的第一个图像 模型 py class Product models Model title models
  • if 语句未命中中的 continue 断点

    在下面的代码中 两者a and b是生成器函数的输出 并且可以评估为None或者有一个值 def testBehaviour self a None b 5 while True if not a or not b continue pri
  • 如何在 pytest 中将单元测试和集成测试分开

    根据维基百科 https en wikipedia org wiki Unit testing Description和各种articles https techbeacon com devops 6 best practices inte
  • 填充两个函数之间的区域

    import matplotlib pyplot as plt import numpy as np def domain x np arange 0 10 0 001 f1 lambda x 2 x x 2 0 5 plt plot x
  • 忽略 Mercurial hook 中的某些 Mercurial 命令

    我有一个像这样的善变钩子 hooks pretxncommit myhook python path to file myhook 代码如下所示 def myhook ui repo kwargs do some stuff 但在我的例子中
  • 如何计算numpy数组中元素的频率?

    我有一个 3 D numpy 数组 其中包含重复的元素 counterTraj shape 13530 1 1 例如 counterTraj 包含这样的元素 我只显示了几个元素 array 136 129 130 103 102 101 我
  • 更改 `base_compiledir` 以将编译后的文件保存在另一个目录中

    theano base compiledir指编译后的文件存放的目录 有没有办法可以永久设置theano base compiledir到不同的位置 也许通过修改一些内部 Theano 文件的内容 http deeplearning net
  • python suds SOAP 请求中的名称空间前缀错误

    我使用 python suds 来实现客户端 并且在发送的 SOAP 标头中得到了错误的命名空间前缀 用于定义由element ref 在 wsdl 中 wsdl 正在引用数据类型 xsd 文件 请参见下文 问题出在函数上GetRecord
  • 如何通过在 Python 3.x 上按键来启动和中断循环

    我有这段代码 当按下 P 键时会中断循环 但除非我按下非 P 键 否则循环不会工作 def main openGame while True purchase imageGrab if a sum gt 1200 fleaButton ti
  • 按元组分隔符拆分列表

    我有清单 print L I WW am XX newbie YY ZZ You WW are XX cool YY ZZ 我想用分隔符将列表拆分为子列表 ZZ print new L I WW am XX newbie YY ZZ You
  • 在 pytube3 中获取 youtube 视频的标题?

    我正在尝试构建一个应用程序来使用 python 下载 YouTube 视频pytube3 但我无法检索视频的标题 这是我的代码 from pytube import YouTube yt YouTube link print yt titl
  • 如何使用列表作为pandas数据框中的值?

    我有一个数据框 需要列的子集包含具有多个值的条目 下面是一个带有 运行时 列的数据框 其中包含程序在各种条件下的运行时 df condition a runtimes 1 1 5 2 condition b runtimes 0 5 0 7
  • gitlab-ci 的缓存虚拟环境

    我使用 Gitlab CI 脚本缓存了 Pip 包 所以这不是问题 现在我还想赶上Conda虚拟环境 因为它减少了设置环境的时间 我缓存了一个虚拟环境 不幸的是 最后需要很长时间才能缓存所有 venv 文件 我尝试仅缓存 CI PROJEC
  • Python 将日志滚动到变量

    我有一个使用多线程并在服务器后台运行的应用程序 为了无需登录服务器即可监控应用程序 我决定包括Bottle http bottlepy org为了响应一些HTTP端点并报告状态 执行远程关闭等 我还想添加一种查阅日志文件的方法 我可以使用以
  • 创建嵌套字典单行

    您好 我有三个列表 我想使用一行创建一个三级嵌套字典 i e l1 a b l2 1 2 3 l3 d e 我想创建以下嵌套字典 nd a 1 d 0 e 0 2 d 0 e 0 3 d 0 e 0 b a 1 d 0 e 0 2 d 0
  • 使用 Firefox 绕过弹出窗口下载文件:Selenium Python

    我正在使用 selenium 和 python 来从中下载某些文件web page http www oceanenergyireland com testfacility corkharbour observations 我之前一直使用设
  • 使用 NumPy 将非均匀数据从文件读取到数组中

    假设我有一个如下所示的文本文件 33 346 1223 10 23 11 23 12 23 13 23 14 23 15 23 16 24 10 24 11 24 12 24 13 24 14 24 15 24 16 25 14 25 15
  • Tkinter - 浮动窗口 - 调整大小

    灵感来自this https stackoverflow com a 22424245 13629335问题 我想为我的根窗口编写自己的调整大小函数 但我刚刚注意到我的代码显示了一些性能问题 如果你快速调整它的大小 你会发现窗口没有像我希望
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 列表值的意外更改

    这是我的课 class variable object def init self name name alias parents values table name of the variable self name 这是有问题的函数 f

随机推荐

  • 如何将 typescript 定义文件添加到 npm 包中?

    有没有办法添加打字稿定义 d ts文件 直接到一个纯javascript项目 例如在package json 我找不到任何相关文档 里面有一个页面TypeScript 手册 https www typescriptlang org docs
  • Mule AMQP 传输 3.6.2 社区可能存在的错误

    我一直在追踪一些奇怪的行为 最终成功地将其隔离 我相信这是一个错误 为了重现该行为 我创建了 4 个测试流程 在 4 个不同的 mule 文件中
  • 错误:找不到资源映射||确保首先安装 CRD

    错误 未找到名称的资源映射 ingress srv 名称空间 ingress srv yaml 中的 版本 networking k8s io v1beta1 中的类型 Ingress 不匹配 确保首先安装 CRD 我是 Kubernete
  • Swagger Codegen basePath 被忽略

    我正在尝试使用生成一些网络服务定义Swagger 代码生成 2 2 1 所有配置都正常工作 并且我的类已正确生成 yaml定义 为何选择该物业basePath被忽视了 My RestController仅使用生成paths定义 https
  • 使用 Chart.js 根据时间字符串绘制单圈时间

    我正在尝试使用 Chart js 绘制一个折线图 显示一系列单圈时间的趋势 但我正在努力将时间字符串解析为正确的格式 我有一个带有这样的单圈持续时间 分钟 秒 毫秒 的时间数组 我将其用作数据集 const times 1 32 599 1
  • Target Boost:: 已导入位置 + 链接错误

    我正在使用 Homebrew 在 MacOS Mojave 上安装 LLVM Boost 和 CMake 将我的 LLVM 升级到版本 9 0 0 并将 Boost 升级到 1 71 0 后 CMake v3 15 3 开始抱怨各种库已经具
  • C++ 整数->std::字符串转换。功能简单?

    问题 我有一个整数 该整数需要转换为 stl string 类型 过去我用过stringstream进行转换 这有点麻烦 我知道 C 方法是做一个sprintf 但我更愿意做一个类型安全 呃 的 C 方法 有一个更好的方法吗 这是我过去使用
  • 使用并行集合就地转换数组

    当拥有一组对象时 通常需要 例如出于性能原因 更新 替换 某些对象 例如 如果您有一个整数数组 您可能希望将负整数替换为正整数 Faster for primitives var i 0 while i lt a length if a i
  • 将相等运算符与 boost::Optional 一起使用

    我试图为另一个命名空间中定义的类型 T 定义一个相等运算符 然后在optional
  • Asp.Net UpdatePanel错误

    我在我的 aspx 页面中使用 UpdatePanel 并使用 DropDownListonselectedindexchanged方法 第一次运行时onselectedindexchanged方法正在发挥作用 但是再次更改选择它会返回这样
  • 用于嵌入式 Tomcat 8.5 的 Tomcat Maven 插件

    我正在运行 Spring Web 应用程序 但无法使用 Tomcat 8 5 在最新的 Eclipse 中执行嵌入式 tomcatTomcat 7 Maven 插件 http tomcat apache org maven plugin t
  • ASP.Net Core:如何更新(更改/添加/删除)嵌套项对象(一对多关系)?

    我有一个带有 MSCustomers 和 MSLocations 的 Net 5 x 项目 MSLocations 与 MSCustomers 之间存在多对一的关系 我的 编辑 页面正确显示 MSCustomer 记录和相应的 MSLoca
  • 使用软键盘时不会调用 onKeyDown

    我的 Activity 的 xml 代码是
  • 如何使用 Mercurial 自动合并 2 个头

    我们刚刚从 subversion 切换到 Mercurial 有一件事比预期花费了更多的时间 合并头 我们喜欢这样一个事实 它使合并独立于 2 个提交 与 subversion 相比 但我们最终会定期合并 2 个头以进行不相关的更改 简单的
  • 隧道和冒泡事件何时在 WPF 中有用?

    我了解冒泡和隧道的工作原理 但是 我对使用它们感到困惑 原因如下 我想处理鼠标点击事件 要使其起泡 有MouseDown并且 为了隧道化 有PreviewMouseDown 然而 MouseDown并不一定意味着用户单击了该控件 可能是用户
  • 如何使用 Objective C iOS 删除 iPhone X 中表格视图顶部的多余空间

    我已经用 Objective C 开发了一个应用程序 它在所有 iPhone 手机上运行良好 但是当我在 iPhone X 模拟器中运行这个应用程序时 我不知道如何在 UITableView 的顶部获得一些额外的空间 大约 20 22 像素
  • 行高属性:正常+4px

    我想要normal行高加上 4px 我努力了 line height normal 4px 但这行不通 Note 我不想使用百分比进行近似 为什么不直接去掉 Chrome 的小焦点眩光呢 使用CSS属性outline none http j
  • 在管道中发送 EOF 而不关闭它

    我正在编写一个使用 GnuPlot 来绘制数据的应用程序 我决定使用 二进制 格式 而不是使用文本格式通过管道来通信两个程序 由于 vprintf 和传递的数据量很大 速度很慢 问题是 在二进制格式中 GnuPlot 期望 EOF Ctrl
  • Laravel 5.2:csrf 令牌不起作用

    您好 为什么我的 csrf 令牌值为 null 当我不使用令牌时 我没有 TokenMismatchException 我该如何解决它 我更深入地挖掘 发现会话没有在 SessionServiceProvider 中注册 是否需要启用某些功
  • 编写交叉兼容的 Python 2/3:__future__、6 和 future.utils 之间的区别?

    我正在编写交叉兼容的 Python 2 和 3 代码 并从中得到一些帮助备忘单 http python future org compatible idioms html 我注意到有不同的包和模块可以帮助做到这一点 future包 例如fu