def pretty(e, level=0):
if len(e) > 0:
e.text = '\n' + '\t' * (level + 1)
for child in e:
pretty(child, level + 1)
child.tail = child.tail[:-1]
e.tail = '\n' + '\t' * level
这个Python函数在第5行使用递归调用。它在函数中有一个for循环,带有一个名为child
的循环变量。但在第6行中,它也有一个child
变量。请帮助我了解child
的定义位置。
答案 0 :(得分:2)
循环结束后,可迭代e
的最后一个元素已分配给child
。由于最小的封闭范围是函数体(for
loops do not create their own scopes in Python),child
仍然在第6行的范围内。
答案 1 :(得分:1)
变量'孩子'是由' for'。
内联声明的变量看看这个c#示例:
foreach (PuzzlePiece **piece** in myPuzzle.pieces)
{
piece.DoSomething();
Console.WriteLine( piece.WhatNumberPieceAmI());
}
Foreach正在创建一个范围变量,该变量将存在于Foreach范围{}。
中您正在查看Python代码中的等价内容。
祝你好运!