【问题标题】:Why am I getting a SyntaxError on a type annotation?为什么我在类型注释上收到 SyntaxError?
【发布时间】:2021-09-18 01:29:35
【问题描述】:

我在下面的屏幕截图中有代码和错误。但不知道为什么它给我这个错误。请帮忙。

def add_node(self, id: str, name: str) -> None:
    """
    add a tuple (id, name) representing a node to self.nodes if it does not already exist
    The graph should not contain any duplicate nodes
    """
    node = (id, name)
    if node not in self.nodes:
        self.nodes.append(node)
    return self.nodes

【问题讨论】:

  • 您使用的是什么版本的 Python? Python 3 中引入了类型注释,但使用旧的解释器可能会给你这样的错误。
  • 这是有效的 Python,在我的机器上运行得很好。这是在某些不允许您使用类型提示的第 3 方 IDE 中吗?
  • 似乎您的编辑器正在使用 Python 2(或真正的旧 Python 3)运行。这在 Python 3 中没有任何问题。因此您需要更新您的编辑器以使用正确的版本运行它。
  • @Daniel 从标签来看,它看起来像 OP 使用 Atom,输出窗格看起来像 script 包,它使用外部解释器。
  • Python 2 的问题很重要。我对 Python 比较陌生,一直忘记 Python 2 是一回事。

标签: python atom-editor


【解决方案1】:

看起来您正在使用 script 包,并且它使用的是 Python 2(自 function annotations were added in Python 3 起)。如果是这样,我敢打赌问题是缺少shebang或坏shebang。尝试将其添加到 Python 文件的顶部:

#/usr/bin/env python3

解释:

  • 如果 shebang 丢失,script 将默认使用名为 python 的程序(基于所选的 grammar),我相信它仍然是 macOS 上的 Python 2。
  • 如果shebang只是说python,同样的事情:它会使用系统版本
  • 如果 shebang 显示 python2,那就是你的问题

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多