我偶然发现了这项工作:
def getChild(self, childName):
for child in self.children :
if(childName == child.data['name']):
return child
return None
就咆哮而言,这段代码暗示了所有关于这个库的说法和知识。
我不是那么深入python,但我不知道正在进行这项任务的狂热pythonic方式是
def getChild(self, childName):
return (
[ child for child in self.children
if child.data['name'] == childName
] + [ None ]
)[0]
或者,为了更好的可读性,
def getChild(self, childName):
myChildren = dict([
(child.data['name'],child)
for child in self.children
])
try:
return myChildren[childName]
except:
return None
除了事实上我仍然不知道如何以及何时缩进以及放置{
,[
,(
,)
,{{1} }和]
,我的替代方案总是对}
的所有元素进行操作。
python是否认识到这一点并且并行处理数据集,还是它仍然可以顺序通过数组? (因此总是花费比我在该库中找到的简单搜索更长的时间)
随着执行的查找量的增加,当然最好更改库以始终维护子项而不是列表的字典,但除此之外。我想知道python如何解释和处理这段代码。
答案 0 :(得分:2)
不,没有自动并行化。 Python是关于有效编写代码,而不是使其具有计算效率。还有一个更大的问题:GIL - Global Interpreter Lock。这意味着一次只执行一个线程。因此,在python中并行化CPU密集型任务并不重要。有没有GIL的口译员,但一般的经验法则:如果你不了解GIL,那么你就拥有它。
关于您发布的代码:python允许您以最常见的程序风格或功能风格进行编写,这在大学中很受欢迎。你可以选择任何。