使用__ setitem __:
的令人讨厌的作业示例self.outer_scopes[self.children.item(i).getNodeName()][self.children.item(i).item(j).getNodeName()] = self.children.item(i).item(j).getTextContent()
是否可以做这样的事情?
self.outer_scopes[self.children.item(i).getNodeName()][self.children.item(i).item(j).getNodeName()]
=
self.children.item(i).item(j).getTextContent()
我的意思是,要分配作业,而不是用\或其他任何内容后的字符串。
答案 0 :(得分:4)
使用变量来缩短表达式。如果我知道更多背景,会找到更好的名字:
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()
答案 1 :(得分:2)
您可以使用反斜杠:
var tag = "body";
new Nightmare()
.goto(baseURL)
.evaluate(function(innertag) {
return document.querySelector(innertag).className;
}, function(className) {
className.should.equal(expected);
callback();
}, tag)
.run();
但这种风格很差。在这种情况下,如果可能的话,我会使用中间变量来使分配更容易阅读。
答案 2 :(得分:1)
括号,就像括号一样,调用隐式行继续:
self.outer_scopes[
self.children.item(i).getNodeName()
][
self.children.item(i).item(j).getNodeName()
] = self.children.item(i).item(j).getTextContent()
也就是说,这至少是一个小重构的尖叫,因为你访问了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()
答案 3 :(得分:1)
您可以在Python的左括号([]
或()
或{}
)中任意使用换行符。
self.outer_scopes[
self.children.item(i).getNodeName()
][self.children.item(i).item(j).getNodeName()
] = self.children.item(i).item(j).getTextContent()
是有效的,但它可能不会赢得任何风格点。
您也可以随时:
foo = self.children.item(i).getNodeName()
bar = self.children.item(i).item(j).getNodeName()
self.outer_scopes[foo][bar] = self.children.item(i).item(j).getTextContent()
还有\
方法(虽然我个人不喜欢这样):
self.outer_scopes[
self.children.item(i).getNodeName()][self.children.item(i).item(j).getNodeName()] = \
self.children.item(i).item(j).getTextContent()