-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
파일인코딩프로그램 만들기에서 질문있습니다!
20.01.13 14:16 작성 조회수 125
1
답변을 작성해보세요.
1
남박사
지식공유자2020.01.13
result_list.extend(search_dir(full_path))
위 구문은 풀어서 쓰면
new_list = search_dir(full_path)
result_list.extend(new_list)
이렇게 되고 실제 이 부분이 재귀적으로 구동되게 되는 핵심 구간이 됩니다. search_dir 함수에서 구한 값을 new_list 변수에 담고 그걸 다시 현재 result_list에 확장해서 저장해라~ 라는 내용이며 search_dir 내부에서는 다시 search_dir 를 호출하기 때문에 몇번이고 반복해서 호출된 search_dir() 함수의 결과를 누적하기 위해 이렇게 사용했습니다. 이렇게 누적된 result_list 는 최초 호출된 지점으로 리턴 하게 됩니다.
result_list.extend(search_dir(full_path)) ==> search_dir(full_path)
이렇게 변경하셨는데 그렇게 되면 search_dir(full_path) 는 아무런 결과를 내놓지 못합니다. 결과를 리턴하면 받아주는 부분을 삭제하셨으니 결과 또한 사라지는게 맞습니다.
search_dir(full_path)
이 문장에는 그 어디에도 리스트를 받거나 넘겨주는 인자가 없이 되어있습니다. search_dir() 함수 내부에서 result_list는 지역변수 입니다. 지역변수는 함수가 종료되며 사라집니다.
lists = search_dir(full_path)
search_dir() 함수 내부의 search_list 결과를 위처럼 외부 변수로 받아줘야 데이터가 사라지지 않습니다.
답변 1