간단한 함수 만들어보기
1. 함수의 기본 구조
함수는 다음과 같이 함수의 선언, 이름, 입력, 기능 및 연산, 출력, 호출로 구성됩니다. 아래의 코드를 살펴보시고, 설명을 참고하세요.
-
선언:
def
함수는
def
키워드를 사용하여 선언됩니다. -
이름:
function_name
함수의 이름은 함수를 식별하는 데 사용되며, 일반 변수의 이름을 지정하는 규칙에 따릅니다. 이 이름을 사용하여 함수를 나중에 호출할 수 있습니다.
-
입력:
x, y
는function_name
에서 사용할 변수, 매개변수(파라미터, parameter)함수는 파라미터(parameter, 매개변수, 인자)를 통해 외부에서 들어온 아규먼트(argument, 인수)를 입력 받습니다. 이 파라미터는 함수 호출 시에 함께 전달한 10, 9를 각각 x, y로 받아들입니다. 모든 함수가 파라미터를 필요로 하는 것은 아닙니다. 파라미터가 없는 함수도 있으며, 이러한 함수는 괄호 안에 어떤 값도 받지 않습니다. 이 책에서는 매개변수와 인수라는 용어 대신 파라미터와 아규먼트로 원문 그대로 읽도록 하겠습니다.
-
기능과 연산:
z = x + y
는function
의 내부에서 수행되는 연산함수 본문에서는 다양한 연산과 처리 과정을 수행할 수 있습니다. 이 부분에서 변수에 값을 할당하거나, 데이터 구조를 조작하는 등의 작업을 수행합니다. 함수의 범위는 4칸 들여쓰기 된 곳까지 입니다. 만약 4칸 들여쓰기가 되어있지 않다면 해당 코드는 함수 바깥에 있는 코드입니다. 반드시 한 줄은 명시를 해야 합니다. 아무 코드를 넣지 않은 경우에는
pass
키워드를 넣어 에러가 나지 않게 합니다. 보통 함수의 골격을 잡을 때pass
키워드를 사용합니다.def function_name(x, y): pass #임시로 값을 넣는 기능!
def function_name(x, y): pass #임시로 값을 넣는 기능!
함수에는 함수 선언 다음 바로 return이 오는 경우도 종종 있습니다. 예를 들어 아래와 같은 코드도 동일한 동작을 합니다.
def function_name(x, y): return x + y function_name(10, 9)
def function_name(x, y): return x + y function_name(10, 9)
-
출력(return):
return z
는function
에서z
의 값을 반환 (print문 값을 출력!)return
키워드는 함수에서 특정 값을 반환하는 데 사용됩니다. 반환이라는 용어가 생소하실 수 있는데 함수가 호출된 곳에 들어갈 값입니다. 예를 들어 add(2, 3)의 반환 값이 5라면 add(2, 3)이 있던 자리에 5가 들어가는 것입니다. 반환 값을 지정하지 않으면 함수는 자동으로None
을 반환합니다. (함수를 호출하면 return으로 지정된 값을 불러온다.) -
호출:
function_name(10, 9)
로 함수 호출함수를 선언한 후에는 그 함수를 호출하여 실행해야 합니다. 함수의 호출은 함수 이름과 소괄호를 사용하여 수행되며, 아규먼트를 함수의 파라미터로 전달합니다. 함수는 호출되지 않으면 실행되지 않습니다. 아래 코드는 함수 내에 0으로 나누는 error가 있지만 호출이 되지 않았기 때문에 error가 나지 않습니다.
파라미터와 아규먼트는 구별되어야 하는 용어입니다. 보통 파선아실
로 외웁니다. 파라미터는 선언할 때, 아규먼트는 실행할 때 사용되는 것을 얘기합니다.
2. 함수 기본 구조 실습
파이썬 함수의 여러 예제를 통해 구성 요소를 이해하고 사용하는 방법을 알아보겠습니다.
2.1 입력 매개변수가 없고, 반환 값도 없는 함수
- 함수의 선언:
def
키워드를 사용하여simple_function
이라는 함수를 선언했습니다. 이 함수는 파라미터가 없습니다. - 함수의 이름:
simple_function
입니다. - 함수의 기능과 연산: 함수 내부에서 ‘Hello, World!’라는 문자열을 출력합니다.
- 함수의 출력(return): 이 함수는 반환 값이 없습니다. 자동으로 None이 들어갑니다.
- 함수의 호출:
simple_function()
을 통해 함수를 호출하며, 아규먼트는 없습니다. 결과적으로 함수의 반환 값인 None이 들어와 출력됩니다. 여기서 주의해야 할 것은 print는 함수의 반환 값이 아니라는 것입니다. 추가로 colab에서는 마지막 라인 값을 print를 하지 않아도 출력하지만 None 값은 print를 하지 않으면 그 아래 라인에 출력되지 않습니다.
2.2 파라미터가 없고, 반환 값은 있는 함수
- 함수의 선언:
def
키워드를 사용하여give_me_five
라는 함수를 선언했습니다. 이 함수는 파라미터가 선언되어 있지 않습니다. - 함수의 이름:
give_me_five
입니다. - 함수의 기능과 연산: 이 함수는 별도의 연산이 없습니다.
- 함수의 출력(return):
5
라는 값을 반환합니다. - 함수의 호출:
give_me_five()
을 통해 함수를 호출합니다. 아규먼트는 없습니다.
이 예에서 give_me_five
함수는 정수 5를 반환합니다. 함수가 어떤 값을 계산하거나, 외부에서 어떤 값을 받지 않도록 설계된 경우 이렇게 할 수 있습니다.
2.3 입력 매개변수가 있고, 반환 값이 없는 함수
- 함수의 선언:
def
키워드를 사용하여greeting
이라는 함수를 선언했습니다. 이 함수는name
이라는 파라미터가 있습니다. - 함수의 이름:
greeting
입니다. - 함수의 기능과 연산: 함수 내부에서 받은
name
을 사용하여 인사 메시지를 출력합니다. - 함수의 출력(return): 이 함수는 반환 값이 없습니다.
- 함수의 호출:
greeting('Licat')
을 통해 함수를 호출하며, ‘Licat’이라는 아규먼트를 파라미터로 전달합니다.
2.4 입력 매개변수가 있고, 반환 값이 있는 함수
- 함수의 선언:
def
키워드를 사용하여add_numbers
라는 함수를 선언했습니다. 이 함수는x
와y
라는 두 개의 파라미터가 있습니다. - 함수의 이름:
add_numbers
입니다. - 함수의 기능과 연산: 함수 내부에서
x
와y
의 합을 계산하고, 그 결과를sum
이라는 변수에 저장합니다. - 함수의 출력(return):
sum
변수의 값을 반환합니다. - 함수의 호출:
add_numbers(5, 3)
을 통해 함수를 호출하며, 5와 3 아규먼트를 파라미터로 전달합니다.
지금까지 함수의 기본적인 구성 요소와 작동 방식에 대해 알아보았습니다. 다양한 매개변수와 반환 값 등을 사용하여 함수를 어떻게 생성하고 사용하는지를 배웠습니다.
3. 나아가기
3.1 print와 return의 구분
print와 return을 구별하는 것은 초급자에게 헷갈리는 내용입니다. print
는 함수입니다. 아래 예제에서 function(5, 7)
을 호출한 값을 출력해 보았더니 None
이 출력됩니다. 이는 이 함수의 return 값이 없기 때문입니다.
아래 코드도 실행해보도록 하겠습니다. 여기서 print 함수의 반환 값을 print하고 있는 것을 확인할 수 있습니다. print 함수의 반환 값은 None인 것을 확인할 수 있습니다.