3

我不是真正的 Python 人,但仅仅因为一位书籍作者在 Python 中发布了他们的代码示例,我就不得不处理它。我收到以下代码的语法错误:

class SimpleGraph:

    def __init__(self):
        self._spo = {}
        self._pos = {}
        self._osp = {}

    def add(self, (sub, pred, obj)):
        """
        Adds a triple to the graph.
        """
        self._addToIndex(self._spo, sub, pred, obj)
        self._addToIndex(self._pos, pred, obj, sub)
        self._addToIndex(self._osp, obj, sub, pred)
...
...

错误:def add(self,(sub,pred,obj)):^ SyntaxError:无效语法

这是python版本问题还是什么?我似乎无法以这种原始形式将元组传递给类方法。建议表示赞赏。顺便说一句,我刚刚下载了 Python 3.3 编译器。

4

3 回答 3

4

是的,这是一个 Python 版本问题。Python 3 中不再允许使用元组参数解包语法。请参阅http://www.python.org/dev/peps/pep-3113/以获取有关如何操作的说明和示例。

于 2013-03-05T19:58:48.913 回答
3

尝试这样的事情:

def add(self, myTup):
    """
    Adds a triple to the graph.
    """
    (sub, pred, obj) = myTup
    self._addToIndex(self._spo, sub, pred, obj)
    self._addToIndex(self._pos, pred, obj, sub)
    self._addToIndex(self._osp, obj, sub, pred)
于 2013-03-05T19:57:51.167 回答
1

该代码适用于 python 2.7,但在 3.0 版中不再有效,依此类推...

于 2013-03-05T19:58:02.240 回答