在列表 [data] = self.read() 中声明一个 python 变量?
declaring a python variable in a list [data] = self.read()?
在研究Odoo的开源repo时,我发现了一行我看不懂的代码,如下所示
[data] = self.read()
我真的很想知道你为什么要把变量放在列表中
似乎确保 [data]
是一个项目的可迭代对象,因此从 self.read()
中解压第一个值
不能赋值给不可迭代对象
>>> [data] = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot unpack non-iterable int object
适用于可迭代类型,但长度必须等于 1
>>> [data] = {'some':2}
>>> data
'some'
>>> [data] = {'foo':2, 'bar':3}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 1)
>>> [data] = [1]
>>> data
1
>>> [data] = [[1]]
>>> data
[1]
>>> [data] = [1, 2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 1)
>>> [data] = []
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 1, got 0)
在研究Odoo的开源repo时,我发现了一行我看不懂的代码,如下所示
[data] = self.read()
我真的很想知道你为什么要把变量放在列表中
似乎确保 [data]
是一个项目的可迭代对象,因此从 self.read()
不能赋值给不可迭代对象
>>> [data] = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot unpack non-iterable int object
适用于可迭代类型,但长度必须等于 1
>>> [data] = {'some':2}
>>> data
'some'
>>> [data] = {'foo':2, 'bar':3}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 1)
>>> [data] = [1]
>>> data
1
>>> [data] = [[1]]
>>> data
[1]
>>> [data] = [1, 2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 1)
>>> [data] = []
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 1, got 0)