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

标签 python python-3.x python-3.7 python-3.8 pep570

我想使用 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 的支持或其他什么)

关于python - 仅位置参数与 python 3.7 的兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64779370/

相关文章:

python-3.x - 有没有办法在 Falcon 的单个类资源下添加多个 on_get 方法?

python - 递归生成所有位数和为 n 的 k 位数字

numpy - python opencv2,错误的摄像头界面,仅cam light

python - 在 Windows 10 上使用 pip 安装 numpy for python 3.7

python - 从 pmdarima : ERROR : cannot import name 'factorial' from 'scipy.misc' 导入 auto_arima 时

python - rpy2 支持毫秒时间戳和带时区的时间戳吗?

python - 两个列表之间的最大值及其索引

PythonQt 不打印任何东西

python - 将库从 Python 2.7 转换为 3.4

python - 使用 Pandas 计算 NPS