【问题标题】:What is the alternative to built-in round()?内置 round() 的替代方法是什么?
【发布时间】:2021-01-28 20:37:29
【问题描述】:

Pylint 抱怨 round built-in referenced 但有什么替代方法?

answers I've seen thus far 只是在内置函数方面让 Pylint 安静下来。一定有其他方法可以调用round(),也许在标准导入库中?使用内置函数有什么潜在的问题吗?

我搜索这些答案只找到了几十篇关于使用内置函数的教程。

用法与round() 无关。这会触发警告:

n = 0.05
n = round(n)

确切的警告只显示在 VS Code 中,它是:

{
    "resource": "/C:/Users/neil.obremski/project/file.py",
    "owner": "python",
    "code": "round-builtin",
    "severity": 4,
    "message": "round built-in referenced",
    "source": "pylint",
    "startLineNumber": 434,
    "startColumn": 9,
    "endLineNumber": 434,
    "endColumn": 9
}

更新:当在 Pylint 参数中设置 --enable=W 时会显示。它显示了对round() 函数的绝对任何使用,包括指定第二个参数。

pylint file.py --enable=W 的 Pylint 输出如下所示:

file.py:435:18: W1633: round built-in referenced (round-builtin)

【问题讨论】:

  • 这里没有问题,afaikt。忽略 linter。
  • 能分享一段相关的代码吗?
  • 您可能已经意识到这一点,但是 :according pylint.pycqa.org/en/latest/technical_reference/…, round() 具有“Python 3 中向后不兼容的语义”。版本之间不同行为的一个示例是:round(1) 在 3.X 中返回一个整数,在 2.7 中返回一个浮点数。我不知道这是否是唯一的区别,但如果你打算编写一个版本互兼容的替代方案,你绝对应该考虑到这一点。
  • 你试过添加第二个参数吗?如果您四舍五入到 2 位,请尝试:round(n, 2)
  • @h_r_b_y -- 是的,对该函数的任何使用都会导致警告。

标签: python python-3.x pylint


【解决方案1】:

如果你只使用 python3.x,你可以忽略这个警告(默认情况下它被禁用,你传递给 pylint 的一些选项正在启用这个)

该警告旨在成为--py3k 检查套件的一部分,用于查找 python2 / python3 兼容性问题(如果您只使用 python3,则此检查套件可能会产生积极的危害 写代码)

标记所有使用 round 的原因是在 python 3 中舍入算法和返回的类型都发生了变化。在 python3 中,现在使用 "bankers rounding" (what's new in python 3.0#builtins) 完成舍入

【讨论】:

    【解决方案2】:

    如果您需要代码同时兼容 Python 2 和 3 并且无法更改您的 lint 设置,请使用此导入 from builtins import round

    【讨论】:

      【解决方案3】:

      鉴于Kevin's comment 以及 Python2 几乎已过时这一事实,最好忽略此警告。

      Linters 甚至 PEP8 都会提供风格建议。通常非常有用的建议。但有时忽略该建议是有充分理由的。

      我的建议是在所有项目中使用您喜欢的 linter。然后列出所有(在您看来)误报、过于迂腐或无用的错误和警告。在你的 linter 的配置文件中全局禁用它们。

      如果您不想全局禁用错误或警告,一些 linter 接受 # noqa 注释作为不检查特定行的通知。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-13
        • 2021-04-13
        • 2015-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多