[EDITED]파이썬 재귀 내가 정말 이상한 오류가 있어요 나는 확실히 그것을 주위에 내 머리를 정리 할 수
경우에만 내부 매개 변수를 변경. for 문 내부에서 id가 여전히 1 (재귀가 시작될 때 1로 초기화 됨) 인 경우 어떻게 가능합니까?
def recursive_read(root, id, cursor, database):
if root.text is not None:
cursor.callproc('add_node', (id, root.text))
database.commit()
#print('Adding element to db... ')
id = id+1
for elem in root.getchildren():
recursive_read(elem, id, cursor, database)
편집 :
이 완벽한 트리를 형성하지만, 불행하게도 그것은 내가 원하는 게 아니에요. 이 들여 쓰기를 "이동"하여 하위가 올바르게 부모를 참조 할 수있게하고, 텍스트가있는 요소가 만나는 경우에만 ID를 늘려야하므로 문제가 남아 있습니다.
def recursive_read(root, indent):
if root.text is not None:
print(' '*indent + '%s' % (root.text))
for elem in root.getchildren():
recursive_read(elem, indent+1)
변경해야 할 사항 ID는 root.text가 None 일 때만 변경됩니다.
제공 한 코드는'root.text is None' 인 경우에만 id의 값을 수정합니다. 그게 무슨 일이 일어나지 않으면이 코드 스 니펫은 오류가 아닙니다. – Olian04
재귀 호출 후에'id'가 변경 될 것으로 예상됩니까? 매개 변수로 전달 된 정수는 변경되지 않으므로 호출자에서 변경되지 않습니다. 'return id'와'id = recursive_read (elem, id, cursor, database)'를 사용해야합니다. – cdarke
텍스트가 None이 아닌 경우 ID를 늘리고 싶습니다. 제공된 값인 – xxxxx