Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

함수 호출

프로그래밍 영역에서 함수는 일련의 명령문을 수행하는 코드의 조각을 의미한다. 함수를 정의 할 때는, 해당 코드 조각을 찾기 위한 이름을 명시해야 한다. 개발자는 나중에 함수의 이름을 호출(call)하는 것으로 코드를 읽어서 실행 할 수 있다. 아래 함수 호출 예제를 보자.
>>> type(32)
<type 'int'>
우리는 type이라는 이름의 함수를 호출했다. 함수를 호출 할때는 값을 넘길 수 있는데 이를 매개변수(argument)라고 한다. 이 함수는 매개변수로 주어진 값이 어떤 타입인지를 확인해서 반환하는 일을 한다.

여기에서 우리는 함수의 3가지 요소를 정리 할 수 있다.
  • 함수이름(혹은 함수명) : 코드조각을 찾기 위한 이름
  • 매개변수 : 함수에 넘길 값. 함수는 이 값을 처리한다. 매개변수를 가지지 않는 함수도 있다.
  • 반환값 : 함수의 처리 결과를 호출한 코드에 되돌려준다. 이 값을 반환값(return value)이라고 한다.

함수에서의 타입 변환

파이선은 타입을 다른 타입으로 변환하는 내장함수를 제공한다. 예를 들어 int 함수는 값을 정수형으로 변환한다. 변환을 위해서는 데이터에 대한 예측이 가능해야 한다. 예측 할 수 없는 데이터에 대한 변환 시도는 실패한다.
>>> int("32")
32
>>> int("Hello")
ValueError: invalid literal for int(): Hello
"32"는 문자열이긴 하지만, 정수형 숫자라고 예측 할 수 있다. 따라서 성공한다. 하지만 "Hello"는 "32"와 마찬가지의 문자열이긴 하지만 파이선의 입장에서는(사람도 마찬가지겠지만) 어떤 정수형 값으로 변환할지 예측 할 수 없다.

부동소숫점(floating-point) 값도 int 로 변환할 수 있는데, 반올림을 하지 않고 소숫점 이하 값을 모두 버린다.
>>> int(3.999999(
3
>>> int(-2.3)
-2
int 형이나 string 형 값들의 float 변환도 가능하다.
>>> float(32)
32.0
>>> float('3.14159')
3.14159'
int, float 형 값들을 문자열로 변환 할 수도 있다.
>>> str(32)
'32'
>>> str(3.14159)
'3.14159'

수학 함수

파이선은 널리 사용하는 수학 함수의 대부분을 제공하는 모듈을 제공한다. 모듈은 연관성이 있는 함수들을 모아둔 파일이다.

import를 이용해서 수학 모듈을 사용 할 수 있다.

>>> import math
math라는 이름의 모듈을 임포트 했다. print 명령을 이용해서 math 오브젝트를 출력 할 수 있다. 아래와 같은 정보들을 읽을 수 있다.
>>> print math
<module 'math' (built-in)>
모듈은 여러 함수의 변수들을 포함하고 있다. "."를 이용해서 모듈이 포함하고 있는 함수에 접근할 수 있다. 이 형식을 도트 표기법(dot notation)이라고 한다.
>>> ratio = signal_power / noise_power
>>> decibels = 10 * math.log10(ratio)

>>> radians = 0.7
>>> height = math.sin(radians)
첫 번째 예제 프로그램은 log10을 이용해서 신호대 잡음비(signal_power 과 noise_power를 이용)를 계산하고 있다. 두번재 예제는 radians의 sin 값을 구한다. 그리고 Degree(도)를 360으로 나누고 2파이 를 곱해서 라디안으로 변경했다.
>>> radians = degrees / 360.0 * 2 * math.pi
>>> math.sin(radians)
0.7071067811865475
math.pi는 math 모듈에 정의된 변수다. 변수는 파이의 근사값으로 15자리의 정확도를 가진다.
>>> math.pi
3.141592653589793

Composition

지금까지는 변수와 표현식의 요소를 결합하는 방법의 언급없이 개별 변수, 표현식과 명령문을 살펴봤다.

프로그래밍 언어의 유용한 기능은 작은 코드 블럭들을 조합해서 새로운 코드를 만드는 능력이다. 예를들어 함수는 산술 연산자롤 포함한 다른 모든 표현식을 인자로 사용 할 수 있다.
x = math.sin(degrees / 360.0 * 2 * math.pi)