1. 개념
- 함수호출은 해당 로직의 순서가 아닌, Symbol의 유무로 이루어진다.
- 파이썬은 기본적으로 단계적으로 아래로 내려가며 로직을 수행한다.
- 함수가 정의될 경우엔 Symbol table에 저장되고, table에 저장된 후엔 함수실행시점에서 함수선언전이라 하여도 함수 사용이 가능해진다.
2. 코드예시
최종실행시점에서 두 함수 모두 Symbol table에 저장된다.
sum_second > print_first > sum_first> print_second 순서대로
Symbol table에 저장되어, 이후 로직 실행시 참조가능.
def sum_second(a, b):
print_first(a, b)
return a + b
def print_first(a, b):
print(a, b)
def sum_first (a, b):
print_second(a, b)
return a + b
def print_second(a, b):
print(a, b)
print(sum_second(1,2))
print(sum_first(3,4))
결과(선언전이어도 Symbol table에 저장되어 정상적인 로직수행가능
1 2
3
3 4
7
3. 참고사이트
https://hashcode.co.kr/questions/4831/%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9D%80-%ED%95%A8%EC%88%98%EC%97%90%EC%84%9C-%EB%8B%A4%EB%A5%B8-%ED%95%A8%EC%88%98%EB%A5%BC-%ED%98%B8%EC%B6%9C%ED%95%A0-%EB%95%8C-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%84%A0%EC%96%B8-%EC%88%9C%EC%84%9C%EC%97%90-%EC%83%81%EA%B4%80%EC%97%86%EC%9D%B4-%ED%98%B8%EC%B6%9C%ED%95%A0-%EC%88%98-%EC%9E%88%EB%8A%94-%EA%B2%83%EC%9D%B4%EC%A3%A0
4. remind
코드에 대한 이해가 우선이다. sugar syntax보다는 sugar logic!