def power_set(func, xs):
def iter(i, a):
if i == len(xs):
func(a)
print('*:{}'.format(a))
else:
iter(i + 1, a)
a.append(xs[i])
print('**:{}'.format(xs[i]))
iter(i + 1, a)
a.pop()
print('***:{}'.format(a))

iter(0, [])

power_set(print, [1,2,3,4])




① power_ser함수에 있는 iter(0, [])에 걸려서 iter함수가 실행됨.

② len(xs) == 4 이기에 if 문은 pass하고 else에 걸림.

③ else에서 젤 처음이 iter(1, a)가 됨. a = []인 상태이기에 a.append(xs[0])명령을 받아 a = [1]이 됨.
④ 그대로 바로 밑의 iter(1, [1]) 가 되기에, 다시 iter함수 발동되서 if 로 돌아감.

뭐 이런 느낌인가요?

누가 설명좀 해주실 수 있나요.. 이것만 2시간째 잡고 있네요...