python – 为什么解压缩元组会导致语法错误?

Python中,我写了这个:

bvar=mht.get_value()
temp=self.treemodel.insert(iter,0,(mht,False,*bvar))

我正在尝试将bvar扩展为函数调用作为参数.
但它返回:

File "./unobsoluttreemodel.py", line 65
    temp=self.treemodel.insert(iter,0,(mht,False,*bvar))
                                                 ^
SyntaxError: invalid syntax

刚刚发生了什么?它应该是对的吗?

解决方法:

如果你想传递最后一个参数作为(mnt,False,bvar [0],bvar [1],…)的元组你可以使用

temp = self.treemodel.insert(iter, 0, (mht,False)+tuple(bvar) )

扩展调用语法* b只能在Python 3.x上的calling functions,function argumentstuple unpacking中使用.

>>> def f(a, b, *c): print(a, b, c)
... 
>>> x, *y = range(6)
>>> f(*y)
1 2 (3, 4, 5)

元组文字不在其中一种情况下,因此会导致语法错误.

>>> (1, *y)
  File "<stdin>", line 1
SyntaxError: can use starred expression only as assignment target
上一篇:python – 以表格格式打印列表


下一篇:python – 更改namedtuples列表的值