1. Function Call 이란
Function call은 함수를 호출하여, 해당 함수를 실행하는 것을 의미한다.
- Python에서는 다양한 built-in function을 제공하고 있으며, third-party에서 제공하는 library의 함수들까지 고려한다면, application을 만드는데 필요한 기반 function들은 이미 다 제공되고 있다고 생각해도 된다.
- 사실 programming에서 중요한 능력 중 하나가 기본에 제공되는 기능들을 조합하여 내게 필요한 기능을 구현하는 것이므로 function call에 대한 확실한 이해가 필요하다.
2. Function Call 의 형태 및 규칙
Function call의 일반적인 형태는 다음과 같음.
function_name (arguments)
- function call에서는 arguments가 0개 이상 사용할 수 있다. (0개도 포함되는 것을 기억하자)
- function name은
def
다음에 주어진 함수의 이름이며 중간에 여백문자 등이 사용될 수 없음
Function call에서의 규칙은 다음과 같음.
- function call에서 가장 먼저 수행되는 부분은 argument들의 evaluation임.
- 각 argument들은 comma로 구분이 됨.
- argument들은 각각 expression으로 function call이 이루어지면 우선 결과값으로 reduction됨.
- argument evaluation은 왼쪽에서 오른쪽으로 이루어짐.
- 이들 argument들의 각각의 결과값들은 function의 대응하는 parameter들에 할당됨.
- 이 후 function이 실행(execution)되며, 하나의 반환값을 return하고 종료됨.
argument로 expression이 주어지는 것과 비슷하게,
Return value가 있는 Function call은 일종의 expression이라고 생각할 수 있으며,
이 경우 특정 expression의 subexpression으로 사용될 수 있음.
다음은 $\langle 2,3,-1 \rangle$의 L2-norm을 구하는 expression임.
import math
def sqrt_sum( e0, e1, e2):
sum = e0+e1+e2
return math.sqrt(sum)
# pow(2,2), pow(3,2), pow(-1,2) 순으로 evaluation이 이루어지고 sqrt_sum가 수행됨.
l2 = sqrt_sum( pow(2,2), pow(3,2), pow(-1,2))
print(l2)
# 다음의 test도 l2와 같은 값을 가짐. (subexpression으로 function call이 활용됨.)
test = pow(2,2)+pow(3,2)+pow(-1,2)
print(test)
# print()는 return value가 없으므로 None이 할당됨.
a = print('test')
print (a == None)
3. Function Call과 Namespace
함수 호출이 이루어지면, Python 에서는 해당 함수를 위한 새로운 namespace (function namespace)가 생성되고,
여기에 함수와 관련된 parameters와 local variables이 놓이게 된다.
해당 namespace (function namespace)는
- 호출될 때마다 생성되며
- Shell에서 관리되는 global variable들이나 함수 이름들이 들어가 있는 namespace(global namespace)와 구분된다.
단, 해당 function call이 끝나면 해당 function namespace는 사라진다.
같이 보면 좋은 자료들
다음 URL에서는 stack과 stack frame, namespace 등에 대한 보다 자세한 설명들이 있으므로 참고할 것.
2023.06.11 - [Programming] - [Basic] namespace, frame, and context
[Basic] namespace, frame, and context
Namespace 프로그래밍 등에서 나오는 namespace는 일종의 추상적인 개념 변수와 함수, 클래스 등이 정의되고 사용될 수 있는 범위(scope)를 지칭함. (때문에 scope 란 용어와 자주 같이 사용됨) variable(변
dsaint31.tistory.com
2023.06.10 - [Programming] - [Python] Function Definition, Call and Arguments
[Python] Function Definition, Call and Arguments
이 문서는 function에 대한 간단한 소개를 하고 있다.일부 자세한 내용들은 관련 URL을 추가하는 형태로 확장될 수 있음.Function이란재사용성과 가독성 을 위해 논리적으로 코드를 나누는(or 그룹짓
dsaint31.tistory.com
'Programming' 카테고리의 다른 글
[Python] Comments and Docstrings (0) | 2023.06.11 |
---|---|
[Basic] namespace, frame, and context (0) | 2023.06.11 |
[Python] Function Definition, Call and Arguments (0) | 2023.06.10 |
[Python] Python Interactive Shell (or Python Interactive Prompt) (0) | 2023.06.09 |
[Python] Python Script File 실행해보기 (0) | 2023.06.09 |