SyntaxError: invalid syntax
我正在尝试将我的代码编译成Python 3模块。我在IDLE中选择“运行模块”时运行正常,但在尝试创建分发时收到以下语法错误:File "/usr/local/lib/python3.2/dist-packages/simpletriple.py", line 9
def add(self, (sub, pred, obj)):
^
SyntaxError: invalid syntax
任何人都可以帮助指出语法有什么问题吗?这是完整的代码:
import csv
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)
本帖最后由 上条把妹之手 于 2018-9-19 17:39 编辑
在Python 3中删除了“元组参数解包”功能。将
def add(self, (sub, pred, obj)):
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):
sub, pred, obj = sub_pred_obj
self._addToIndex(self._spo, sub, pred, obj)
self._addToIndex(self._pos, pred, obj, sub)
self._addToIndex(self._osp, obj, sub, pred)
________________________________________
对于lambda函数,您不能使用赋值来解压缩。最好的解决方案通常是不拆包。例如,改变这个:
lambda (x, y): (y, x)
......对此:
lambda xy: (xy, xy)
对于复杂的功能,这可能会变得很丑陋 - 但是对于复杂的功能,def无论如何你可能都想要它们。
正如二楼所说的那样python3不支持元组参数解包,换成多个参数就好了
页:
[1]