언어/파이썬

파이썬 어디까지파봐썬8강(2)_함수&다양한 함수의 형태

디지털랫드 2024. 2. 22. 19:48

2.함수

1) 파이썬에서 함수란?


파이썬에서는 식별자 뒤에 괄호가 붙어 있으면 해당 식별자를 함수라고 부릅니다.
이때까지 우리는 type(), len() 등 이미 함수를 사용했었습니다.
이렇게 파이썬에 이미 내장 되어있는 함수를 가져다가 사용할 수도 있고 우리가 직접 함수를 만들 수도 있습니다.

함수를 쓰는 이유는 프로그래밍 자체가 반복적으로 사용되는 코드 자주 쓰는데
매번 동일한 코드를 반복해서 쓰는 것보다 함수로 한번 정의해 놓고 계속 사용하는 것이 효율적이기 때문입니다.

함수에 대한 용어를 정리해보겠습니다.
함수를 만드는 것을 함수를 정의한다고 표현합니다.
정의한 함수를 사용하는 것은 함수를 호출한다고 표현합니다.
함수 괄호 내부에 여러 가지 자료를 넣게 되는데, 이 자료를 매개변수(parameter) 라고 부릅니다.
함수를 호출할 때 넣는 값을 인수(argument) 라고 부릅니다.
마지막으로 함수의 결과를 리턴값(return) 이라고 부릅니다.

함수 용어에서 주의해야할 점은 매개변수와 인수의 의미를 잘 구분해야 하는 것입니다.
함수의 예시를 보면서 구분해보도록 하겠습니다.

 

 

즉,

**함수를 정의할떄:매개변수

**함수를 호출할때:인수

 

2) 함수의 기본 구조


함수는 한마디로 '코드의 집합'입니다. 함수의 기본 구조는 다음과 같습니다.

def 함수 이름(매개변수):
    수행할 문장1
    수행할 문장2
    ...

간단한 함수를 만들고 톺아보겠습니다.

def add(a, b):    # 함수 이름은 add이고 입력 두개(a, b)값을 받으면
    return a + b  # 리턴값은 입력 두개(a, b)를 더한 값이다.

함수 이름은 add
매개변수는 a, b
리턴값은 a + b 입니다.

이번에는 실제 인수를 넣어서 리턴값까지 출력해보겠습니다.

 
 
실행 완료
[5]:
3

매개변수와 인수의 차이점을 느끼셨나요?
두 용어는 자주 같이 쓰여서 헷갈리는 용어이기 때문에 잘 기억해둬야 합니다.

다시 정리하면
매개변수는 함수에 입력된, 전달될 값을 받는 변수를 의미하고
인수는 함수를 호출할 때 전달하는 입력값을 의미합니다.

 

 

 

 

3.다양한 함수의 형태

1) 입력값, 결과값이 있는 함수


입력값, 결과값이 있는 함수는 가장 일반적인 함수라고 할 수 있습니다.
예시를 함께 살펴보겠습니다.

 
 
실행 완료
[6]:
3

이 예시에서 입력값은 10, 3 이고 결과값은 3 입니다.

2) 입력값이 없는 함수


입력값이 없는 함수도 있습니다.
함수를 만들 때 매개변수를 넣지 않고 괄호를 비워두면 됩니다.

 
 
실행 완료
[7]:
'hi!'

3) 결과값이 없는 함수


결과값이 없는 함수도 있습니다. 다음 예시를 보겠습니다.

 
 
실행 완료
aiffelaiffelaiffel

출력된 값이 있어서 결과값이 있다고 생각될 수 있지만, 결과값은 없습니다.

즉 출력값과 결과값이 동일한 게 아닙니다.

결과값은 리턴값이 있어야 하기떄문에

프린트만 하는 출력값과 다르다.

 

의아하실 수 있겠지만 천천히 생각해보겠습니다.

결과값은 함수가 최종으로 리턴하는 값을 말합니다.
그런데 위에 출력된 값은 수행할 문장안에 있는 print함수가 실행된 것 뿐입니다.

결과값을 변수에 할당해보면 리턴값이 있는지 없는지 알수 있습니다.

 
 
실행 완료
aiffelaiffelaiffel
 
 
실행 완료
None

repeat함수가 호출 되어서 출력 값이 나왔지만
해당 함수를 할당한 check변수를 출력하면 None이 나오는 것을 확인할 수 있습니다.
예약어에서 언급했듯이 None은 값이 없음을 뜻 합니다. 즉, 결과값은 없습니다.

4) 입력값도 결과값도 없는 함수


입력값도 출력값도 없는 함수도 있습니다. 다음 예를 보겠습니다.

 
 
실행 완료
Hello! Python

결과 값을 확인 해 볼까요?

 
 
실행 완료
Hello! Python
 
 
실행 완료
None

입력 인수를 받는 매개변수도 없고 return문도 없으니 입력값도 결과값도 없는 함수입니다