【问题标题】:Why does PyCharm give me warnings for "Duplicate *arg"?为什么 PyCharm 会给我“重复 *arg”的警告?
【发布时间】:2016-02-27 13:10:38
【问题描述】:

使用 Python 3.5,我将多个多维列表插入到 MySQL 查询中,该查询将多行插入到表中。这是我的执行代码sn-p:

for x, y, z, i in zip(list1, list2, list3, list4):
    cursor.execute(add_related_accounts_query.format(x[0], *y, *z, *i))

查询工作正常,但 PyCharm 给了我这个警告:

重复的 *args

此检查报告声明的参数与 实际的论点,以及不正确的论点和不正确的 参数顺序。

如果我按 Alt+Enter 通过 PyCharm 修复警告,它会消除 *z, *i,然后查询不再起作用。

如果解决方案破坏了我的脚本,有人可以解释为什么会发出此警告吗?

【问题讨论】:

  • 您使用的是哪个版本的 Python?多个 * 解包在 3.5 之前不是有效的语法(请参阅 PEP-448)。
  • 3.5,对问题进行编辑
  • 这就是 PyCharm 中当前项目解释器使用的版本?哪个版本的 PyCharm?我认为完整的 3.5 支持仅在 PyCharm 5.x 中可用。
  • 解释器是 3.5,但我使用的是 PyCharm 4.5.4,如果你实际上是正确的,那是有道理的
  • 升级到最新的 PyCharm 后你应该看看它是否仍然存在 - 这是一种闪亮的新语法,因此在早期的 IDE 版本中可能是不允许的。

标签: python pycharm args python-3.5


【解决方案1】:

PyCharm 可能只希望您将一个 *args 列表传递给函数。您可以在扩展它们之前添加 x、y 和 i,我想 pycharm 会停止抱怨。

cursor.execute(add_related_accounts_query.format(x[0], *(y+z+i))

不过,您必须对 pycharm 警告持保留态度。它并不总是完美的。它有一组 cmets 你可以放在这样的行之前强制它忽略警告。

【讨论】:

    猜你喜欢
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 2011-10-05
    相关资源
    最近更新 更多