from __future__ import ... 能否保证 Python 2 和 3 的兼容性?

2024-01-23

我对热身“Python 2 还是 Python 3?”不感兴趣。问题(尽管最近的一个 https://stackoverflow.com/q/5478518/321973我发现已经一岁多了),但我偶然发现:

如果您的文件开始,您可以在 Python 2 下编写 Python 3 代码 与行:

from __future__ import absolute_import, division, generators, unicode_literals, print_function, nested_scopes, with_statement

完成该行后,您的代码将适用于 Python 2 或 Python 3。可能在极少数情况下它不起作用,但我有 没有找到任何,

这是真的?这一行是否足以确保您编写的代码可以在 Python 2.x(我假设 >=2.5)和 3.x(假设导入的模块在两者中都可用)上运行?


我会说不,这是胡说八道。即使有了这些导入,Python 2 和 3 之间仍然存在显着差异:例如,input()在Python 3中就像raw_input()在Python 2中;range()在Python 3中就像xrange()在 Python 2 中。xrange()你可能可以逃脱使用range()在 Python 2 中,只要范围很小,但如果范围很大,您的程序在 Python 2 和 Python 3 下的内存使用情况可能会非常不同。

您可以在代码中添加如下内容:

try:
    range = xrange
    input = raw_input
except NameError:
    pass

但接下来你必须找到所有这些边缘情况并修复它们。例如,有keys() and values()的方法dict在 Python 3 中返回迭代器,但在 Python 2 中返回列表,因此您需要编写一个dict“修复”这个问题的子类(然后永远不要在代码中使用字典文字而不包装它们,因为否则它们将是内置的dict type).

我想,通过使用__future__以及各种修复,并且通过限制自己在由此创建的可在 2.x 和 3.x 下运行的 Python 子集中编写代码,就有可能编写在两个版本中运行的代码。不过,看起来工作量很大。有一个理由有一个2to3公用事业...

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

from __future__ import ... 能否保证 Python 2 和 3 的兼容性? 的相关文章

  • Python 切片对象和 __getitem__

    python 中是否有内部的东西来处理传递给的参数 getitem 不同 并自动转换start stop step构造成切片 这是我的意思的演示 class ExampleClass object def getitem self args
  • 如何使用 Python 3 绕过 HTTP Error 403: Forbidden with urllib.request

    您好 不是每次都这样 但有时在尝试访问 LSE 代码时 我会收到每一个烦人的 HTTP 错误 403 禁止消息 任何人都知道我如何仅使用标准 python 模块来克服这个问题 遗憾的是没有漂亮的汤 import urllib request
  • 使用python查找txt文件中字母出现的次数

    我需要从 txt 文件中读取该字母并打印 txt 文件中出现的次数 到目前为止 我已经能够在一行中打印内容 但计数有问题 有人可以指导吗 infile open grades txt content infile read for char
  • 使用 django-rest-framework 设置对象级权限

    尝试使用 django rest framework 最干净 最规范地管理 django guardian 对象级权限 我想将对象的读取权限 module view object 分配给在执行 POST 时发出请求的用户 我的基于阶级的观点
  • 在python中将数据库表写入文件的最快方法

    我正在尝试从数据库中提取大量数据并将其写入 csv 文件 我正在尝试找出最快的方法来做到这一点 我发现在 fetchall 的结果上运行 writerows 比下面的代码慢 40 with open filename a as f writ
  • Mypy 无法从文字列表推断项目的类型

    我有一个变量x和一个文字列表 例如 0 1 2 我想转换x这些文字之一 如果x在列表中 我将其退回 否则我返回一个后备值 from typing import Literal Set Foo Literal 0 1 2 foos Set F
  • 使用 Paramiko 进行 DSA 密钥转发?

    我正在使用 Paramiko 在远程服务器上执行 bash 脚本 在其中一些脚本中 存在与其他服务器的 ssh 连接 如果我只使用 bash 不使用 Python 我的 DSA 密钥将被第一个远程服务器上的 bash 脚本转发并使用 以连接
  • 在 python pandas 中,如何保存“网格图”?

    我对 pandas 绘图工具很陌生 在文档中 以下命令非常方便 myplot rts ret hist bins 50 by rts primary mic 然而 当我尝试从图中获取图形参考并保存它时 问题就出现了 myfigure myp
  • Python Tkinter 模块不显示输出

    我正在尝试学习 Python 并尝试使用 Python 中的 GUI 并遇到了这个 Tkinter 模块 我的代码运行 但运行时窗口没有出现 我的代码如下 from Tkinter import to create a root windo
  • Python HMAC:类型错误:字符映射必须返回整数、None 或 unicode

    我在使用 HMAC 时遇到了一个小问题 运行这段代码时 signature hmac new key secret key msg string to sign digestmod sha1 我收到一个奇怪的错误 File usr loca
  • 运行 Python 单元测试,以便成功时不打印任何内容,失败时仅打印 AssertionError()

    我有一个标准单元测试格式的测试模块 class my test unittest TestCase def test 1 self tests def test 2 self tests etc 我的公司有一个专有的测试工具 它将作为命令行
  • 如何查找或安装适用于 Python 的主题 tkinter ttk

    过去 3 个月我一直在制作一个机器人 仅用代码就可以完美运行 现在我的下一个目标是为它制作一个 GUI 但是我发现了一些障碍 主要的一个是能够看起来不像一个 30 年前的程序 我使用的是 Windows 7 我仅使用 Python 3 3
  • Ubuntu systemd 自定义服务因 python 脚本而失败

    希望获得有关 Ubuntu 中的 systemd 守护进程服务的一些帮助 我写了一个 python 脚本来禁用 Dell XPS 上的触摸屏 这更像是一个问题 而不是一个有用的功能 该脚本可以工作 但我不想一直启动它 这就是为什么我想到编写
  • Python 中维基百科 API 中的 DisambiguationError 和 GuessedAtParserWarning

    我想获得维基百科与搜索词相关的可能且可接受的名称列表 在这种情况下是 电晕 当输入以下内容时 print wikipedia summary Corona 这给出了以下输出 home virej local lib python3 8 si
  • 使用另一个数据帧在数据帧中创建子列

    我对 python 和 pandas 很陌生 在这里 我有一个以下数据框 did features offset word JAPE feature manual feature 0 200 0 aa 200 200 0 200 11 bf
  • 为什么python+sqlite3特别慢?

    我尝试使用 Python 2 7 4 sqlite3 和 Firefox SQLite Manager 0 8 0 处理对同一数据库的相同请求 在小型数据库 8000 条记录 上 Python 和 Firefox 都运行得很快并且给出了相同
  • Django 管理器链接

    我想知道是否有可能 如果可以的话 如何 将多个管理器链接在一起以生成受两个单独管理器影响的查询集 我将解释我正在研究的具体示例 我有多个抽象模型类 用于为其他模型提供小型的特定功能 其中两个模型是DeleteMixin 和GlobalMix
  • 带 Flask 的 RPI dht22:无法将第 4 行设置为输入 - 等待 PulseIn 消息超时

    我正在尝试制作一个 Raspberry Pi 3 REST API 使用 DHT22 提供温度和湿度 整个代码 from flask import Flask jsonify request from sds011 import SDS01
  • rpy2 无法加载外部库

    希望有人能帮忙解决这个问题 R版本 2 14 1rpy2版本 2 2 5蟒蛇版本 2 7 3 一直在尝试在 python 脚本中使用 rpy2 加载 R venneuler 包 该包以 rJava 作为依赖项 venneuler 和 rJa
  • 将 Keras 集成到 SKLearn 管道?

    我有一个 sklearn 管道 对异构数据类型 布尔 分类 数字 文本 执行特征工程 并想尝试使用神经网络作为我的学习算法来拟合模型 我遇到了输入数据形状的一些问题 我想知道我想做的事情是否可能 或者我是否应该尝试不同的方法 我尝试了几种不

随机推荐

  • 实体框架返回旧数据

    我遇到了 EF 无法在 3 层 WPF 应用程序中返回最新数据的问题 我怀疑这与我处理上下文生命周期的方式有关 这是场景 UnitOfWork 内包含多个存储库 还有一项服务 MyService 它使用 UnitOfWork 此 UnitO
  • 使用朴素贝叶斯分类器对推文进行分类:一些问题

    除了其他来源之外 我还使用 Stackoverflow 上的各种帖子 尝试实现自己的 PHP 分类器 将推文分为正面 中性和负面类别 在编码之前 我需要理清流程 我的思路和例子如下 p class p words class Bayes t
  • Nemerle 和 F# 在 .Net 上的功能比较

    社区维基问题 根据这个问题 在 Net 中使用 Scala 有什么好处 https stackoverflow com questions 3587499 what are the benefits of using scala in ne
  • ios7中光标可见性问题

    只需创建一个UITextField in ios7 SDK但是当我输入一些内容时 会显示文本UItextField但光标不是 关于可能出现什么问题的任何线索吗 使用光标更改 UITextField 的tintColor mobileText
  • Java 中的重定向 stdin 和 stdout

    我正在尝试重定向 java 中子进程的标准输入和标准输出 最终我会将输出转到 JTextArea 或其他东西 这是我当前的代码 Process cmd Runtime getRuntime exec cmd exe cmd getOutpu
  • C# 映射两个复杂对象

    我有四门课 public class Customer public string FirstName get set public string LastName get set public List
  • 获取从 firebase firestore 返回的文档中的特定字段

    所以 我有一个可能非常容易解决的问题 我只是不太明白 本质上 此时我正在尝试将特定文档的字段存储到 2 个变量中 以便我可以在其他地方使用它们 这是我的 firestore 层次结构 这是我到目前为止的代码 我认为我走在正确的轨道上 但我不
  • 如果类“包含”或正则表达式,美丽的汤?

    如果我的班级名称不断不同 例如 listing col line 3 11 dpt 41 listing col block 1 22 dpt 41 listing col line 4 13 CWK 12 通常我可以这样做 for Eac
  • Mercurial:获取有关存储库的信息而不克隆它们

    几天前 我开始尝试 Mercurial 一切都很顺利 直到我决定尝试编写一个小程序 该程序从远程服务器获取存储库列表和每个存储库的变更集 ID 列表 允许用户选择存储库并变更集 克隆它并更新到所选的修订版 这引发了两个问题 有没有办法从服务
  • 尝试将字符串文字作为模板参数传递[重复]

    这个问题在这里已经有答案了 我正在尝试找到一种舒适的方法来将字符串文字作为模板参数传递 我不关心支持尽可能多的编译器 我正在使用最新版本的 g std c 0x 我尝试了很多可能的解决方案 但都令我失望 我有点放弃了 但首先我想知道why其
  • 在Python中评估布尔环境变量

    在Python中如何评估环境变量是否为布尔值True 使用是否正确 if os environ ENV VAR is True Option 1 我认为这很有效 my env os getenv ENV VAR False lower in
  • XNA 查看矩阵 - 寻求解释

    我在理解 XNA 中的视图矩阵时遇到了一些严重的问题 我已经在所有其他部分方面取得了很大的进展 并且由于我刚刚学会了所需的数学知识 因此我不想在不首先了解内置矩阵函数的作用的情况下使用它们 现在我了解了旋转 投影和平移的基础知识 但我一生都
  • 在 .NET 中跨 AppDomain 移动对象

    有没有办法在 AppDomain 之间高效共享或移动 NET 对象 我意识到 AppDomains 的目的是提供隔离 但是我有一个情况 我需要移动一组相对较大的缓存不可变对象 这些对象的计算和创建成本很高 目前 我有一种有效的序列化方法 但
  • 如何从纬度和经度获取完整的地址?

    我想从 android 中的纬度和经度获取以下值 街道地址 市 州 Zip 完整地址 如何实现这一目标 Geocoder geocoder List
  • 在非角度页面上使用量角器测试登录

    我正在尝试使用量角器进行 e2e 测试 但首先我需要登录非角度页面 我尝试按照指示直接使用 webDriverhere http ng learn org 2014 02 Protractor Testing With Angular An
  • Xamarin Forms 在模拟器和设备上项目空白谷歌地图

    I have created a cross platform App using Xamarin forms On Mac Book Pro el Capitan I need to use maps in it thus using X
  • 错误:“在清单中找不到版本代码。”

    我正在尝试构建签名的应用程序包 以便发布 我所做的只是更新操作系统版本和一些图形 该应用程序在 ADK 上运行得很好 当构建签名的 apk 时 我收到以下错误消息 在清单中找不到版本代码 这是错误日志 由以下原因引起 com android
  • 英特尔编译器值得吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 非常简单 是英特尔编译器 http software intel com en us intel compilers 值得入手吗 我主要从事系统
  • Ubuntu 中的 PostgreSQL pg_dump 语法错误

    在 ubuntu 16 04 中 当我想运行 pg dump 时 它不起作用 我收到此错误语法错误 怎么了 postgres pg dump db name gt db name1 sql postgres postgres ERROR s
  • from __future__ import ... 能否保证 Python 2 和 3 的兼容性?

    我对热身 Python 2 还是 Python 3 不感兴趣 问题 尽管最近的一个 https stackoverflow com q 5478518 321973我发现已经一岁多了 但我偶然发现 如果您的文件开始 您可以在 Python