首页 > 解决方案 > 在列表 [data] = self.read() 中声明一个 python 变量?

问题描述

在研究 Odoo 的开源 repo 时,我发现了一行我不理解的代码,如下所示

[data] = self.read()

在那里找到https://github.com/odoo/odoo/blob/8f297c9d5f6d31370797d64fee5ca9d779f14b81/addons/hr_holidays/wizard/hr_holidays_summary_department.py#L25

我真的很想知道你为什么要把变量放在一个列表中

标签: python-3.xodoo

解决方案


它似乎确保它[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)

推荐阅读