【问题标题】:Criteria (NOT TOOLS) to check what version of python a piece of code is written for? [duplicate]检查一段代码是为哪个版本的python编写的标准(不是工具)? [复制]
【发布时间】:2017-12-10 08:31:12
【问题描述】:

网上找了很多小程序或者样例代码,不一定具体写在什么上下文(shebang),也不一定用明显的东西作为打印语句。

它们可能会与某些或某些其他版本的 python 崩溃,但这可能不是由于基本的不兼容性,而只是由于缺少可能难以找到的库。

this question 中提到了一些工具,但这里的问题是:“确定代码是否与任一版本的 python 兼容的好标准是什么?”

至少有:

  • shebang 的存在(但通常不存在)
  • 打印语句(不带括号)来自 python2 或更早版本(但您并不总是拥有它们,尤其是在 GUI 程序中)
  • 整数除法 (//) 来自 python 3 及更高版本(但并非所有程序都计算整数除法)

还有什么?

@Mureinik、@JJJ、@Bear Brown、@Tempux,请删除重复标志。

【问题讨论】:

  • 有点主观,但我可能会看看打印语句的格式。
  • 同一个程序可能运行在所有 Python 版本中,因为版本之间存在更多共同点和差异。所以只要在你想要的版本下运行程序,你自己就会得到答案。
  • 寻找shebang。或者评论。或者写它的人。
  • 我在审查中得到了这个,并且正在投票结束。点击工具链接并阅读代码,这就是你的答案。
  • 将读者发送到一段代码对用户来说不是很友好。特别是因为寻找代码片段的人通常不是经验丰富的程序员。

标签: python version compatibility


【解决方案1】:

理想情况下,python 脚本将在第一行包含一个 shebang,例如:#!/usr/bin python 和/或 cmets 告诉您它可以使用的最低(也可能是最高)版本。

其他线索:

print Something  # Python 2 Only
print(Something)  # Python 3 Mostly

from __future__ import print_function # As first active code

print(Something)  # Now works for both

当然,编写良好的代码要么与许多版本兼容,要么专门检查它需要的版本s

如果缺少库,则错误消息非常清楚,但大多数情况下,python 代码倾向于“只是运行”™,因此真正的解决方案是尝试使用 python 版本的代码s你必须手。

【讨论】:

  • 我还看到一些库检查 sys.version_info 并提出 RuntimeError 以防使用了错误的 Python 版本(通常在 __init__.py 中)。
  • 好点@Coal_ 但是那些往往在编写良好的库中,而不是根据问题在线找到的小型实用程序和代码 sn-ps。
【解决方案2】:

可以参考官方文档:Python Docs

我假设您有一个适用于 Python 3.x 的 IDE,您可以在其中尝试这段代码。
正如史蒂夫所说,您可以使用 python(x) 的print 函数来区分。

print "hello world"

所以,如果代码中有打印语句(如上),您将得到:

SyntaxError: Missing parentheses in call to 'print'.

因此,那段代码是针对 2.x python 的。

【讨论】:

  • 是的,python 2 中的 print 语句和 python 3 中的 print 函数之间的区别让我无法理解。但是,这就是我指定“小程序”或“示例代码”的原因,它们可能不一定有 shebang 或打印指令(尤其是 GUI 代码)
  • 你可以添加你的 print() 语句然后运行它。解决了吗?
  • 你可以通过官方文档
  • 好吧,我正在寻找快速的技巧。当然,文档很有趣,但大多数情况下,它会让我认为工作方式不同,但不一定看起来不同。
  • 在任何语言中都没有这样的“快速技巧”。您应该深入并相应地练习。不过如果您时间较少,则可以在代码中使用print()
猜你喜欢
  • 2020-07-13
  • 2016-11-30
  • 2020-05-24
  • 2015-11-27
  • 2010-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多