[표 1.2.14]에서 네 개를 제외한 함수 모두 순수 함수(pure function)이다. 순수 함수는 동일한 인수를 받으면 언제나 동일한 값을 반환하며, 외부 환경에 미치는 부작용(side effect)이 없는 함수이다. random.random()
과 random.randrange()
는 호출할 때마다 다른 값을 반환하므로 순수 함수가 아니며, stdio.write()
와 stdio.writeln()
은 표준 출력 장치에 문자열을 출력하는 부작용이 있으므로 순수 함수가 아니다.
math
모듈에서는 원주율과 자연로그를 상수인 math.pi
와 math.e
로 정의하고 있으므로, 프로그램 안에서 이 값이 필요할 때 상수를 사용할 수 있다. 따라서 math.sin(math.pi/2)
는 1.0
을 반환하고(math.sin()
은 라디안 값을 받는다) math.log(math.e)
는 1.0
을 반환한다(math.log()
의 기본값 밑수가 e
이다).
최신 프로그래밍 언어에서는 이와 같은 API 문서를 온라인으로 제공한다. 파이썬 전문 프로그래머들이 참조하는 API 문서가 온라인으로 제공되지만, 이 책의 예제 코드에서 사용하는 API는 [표 1.2.14]와 같은 표를 이용해 본문에서 자세히 설명하므로, 예제 코드를 이해하기 위해 온라인 문서를 참조할 필요는 없을 것이다.
그리고 2장과 3장에서는 우리가 사용할 API를 정의하고 직접 구현하는 방법을 설명한다.
설명 간소화 | 이제부터 함수와 함수 호출에 관련된 파이썬 문장을 설명할 때 말을 줄이고자 한다. 예를 들어 math.sqrt(4.0)
코드를 설명할 때 “math.sqrt(4.0)
은 2.0
을 (값으로 하는 float
객체)(에 대한 참조를) 반환한다”에서 괄호 안에 들어가는 부분은 생략한다. 따라서 math.sqrt(16.0)
을 설명할 때 “16.0
값을 가진 float
형 객체에 대한 참조를 math.sqrt()
에 전달한다. 이 함수는 4.0
값을 가진 float
형 객체에 대한 참조를 반환한다”고 장황하게 나열하지 않고, “sqrt(16.0)
은 4.0
을 반환한다”고 간단히 설명한다. 그리고 ‘함수가 반환하는 객체에 대한 참조’를 설명하기 위해 간단히 반환 값(return value)이라는 용어를 사용한다.