Python 中可以进行多行赋值吗?

Eri*_*ans 6 python line variable-assignment

使用 __ setitem __ 的令人讨厌的赋值示例:

self.outer_scopes[self.children.item(i).getNodeName()][self.children.item(i).item(j).getNodeName()] = self.children.item(i).item(j).getTextContent()
Run Code Online (Sandbox Code Playgroud)

可以做这样的事情吗?

self.outer_scopes[self.children.item(i).getNodeName()][self.children.item(i).item(j).getNodeName()] 
= 
self.children.item(i).item(j).getTextContent()
Run Code Online (Sandbox Code Playgroud)

我的意思是,要分割作业,而不是用 \ 或其他什么来分割它后面的字符串。

mip*_*adi 8

您可以使用反斜杠:

self.outer_scopes[self.children.item(i).getNodeName()][self.children.item(i).item(j).getNodeName()] \
= \
self.children.item(i).item(j).getTextContent()
Run Code Online (Sandbox Code Playgroud)

但这是很糟糕的风格。在这种情况下,如果可能的话,我将使用中间变量来使赋值更易于阅读。


Dan*_*iel 5

使用变量来缩短表达式。如果我了解更多上下文,会找到更好的名字:

item_i = self.children.item(i)
item_j = item_i.item(j)
outer_scope = self.outer_scopes[item_i.getNodeName()]
outer_scope[item_j.getNodeName()] = item_j.getTextContent()
Run Code Online (Sandbox Code Playgroud)


che*_*ner 3

方括号,就像圆括号一样,调用隐式续行:

self.outer_scopes[
    self.children.item(i).getNodeName()
    ][
    self.children.item(i).item(j).getNodeName()
    ] = self.children.item(i).item(j).getTextContent()
Run Code Online (Sandbox Code Playgroud)

也就是说,这至少需要一点重构,因为您访问了self.children.item(i)三次。

item_i = self.children.item(i)
self.outer_scopes[
    item_i.getNodeName()
    ][
    item_i.item(j).getNodeName()
    ] = item_i.item(j).getTextContent()
Run Code Online (Sandbox Code Playgroud)