Вместо
global можно
nonlocal использовать, ещё можно, как я понял вместо последнего
if elif использовать, ну и зачем
res и
result когда одним можно обойтись?
def getElByIndex (self, node, index):
'''Возвращает элемент по индексу'''
i = 0 # начальный индекс
result = None # найденный элемент
def f (node, index): # рекурсивная функция
nonlocal i, result
if node.nodeType == Node.ELEMENT_NODE: # если это элемент
if i == index: # если индекс равен заданному
result = node # запомнить результат
i + = 1 # увеличить индекс
elif node.hasChildNodes: # если узел имеет дочерние
for child in node.childNodes: # для всех дочерних
f (child, index)
f (node, index)
return result
Возможности проверить не было, так что извеняйте если что
p.s. Удалять локальные переменные тоже не надо: сами удалятся