仅位置参数与 python 3.7 的兼容性

Positional only parameters compatibility with python 3.7

我想使用 PEP570 中定义的新的仅位置参数语法,但我也想保持与 python 3.7 的兼容性(直接 运行 脚本与 def f(a, /, b): 直接结果在语法错误中)。有办法吗?

如果没有,对于包维护者来说,他们是否必须在 python 3.7 支持被取消之前避免使用新功能?

简短回答:不,没有办法做到这一点。

我想从技术上讲,你 可能 能够在你的 setup.py 中进行黑客攻击,以编程方式删除安装在旧版本 Python。但这已经进入了极端的领域;实际上,您的选择是:

  1. 在 3.7 不再支持之前不要使用位置参数
  2. 为 3.7 及更早版本与 3.8+ 维护单独的代码库
  3. 在您自己的项目中不支持 3.7 及更早版本,即使它仍然是 Python 的受支持版本;要求用户更新(从 3.x 更新到 3.x+1 所付出的努力并不极端;这不像十年前放弃对 Python 2 的支持或其他任何东西)