[Python 기초] 11. 함수

김나연·2021년 8월 7일
0

Python

목록 보기
11/18
post-thumbnail

함수

입력값을 가지고 어떤 일을 수행한 다음에 그 결과물을 내놓는 것이 함수가 하는 일이다.

예를 들어, 믹서를 사용해서 과일을 갈아 과일 주스를 만들 때, 믹서에 넣는 과일은 "입력"이 되고 과일 주스는 "출력"이 된다. 여기서 믹서가 함수의 역할을 하는 것이다.

함수의 구조

def 함수명(매개변수):
	<수행할 문장1>
	<수행할 문장2>
	...

def는 함수를 만들 때 사용하는 예약어이며, 함수 이름은 함수를 만드는 사람이 임의로 만들 수 있다. 괄호 안의 매개변수는 이 함수에 입력으로 전달되는 값을 받는 변수이다.

def add(a, b):
    return a + b

위 예시에서 함수의 이름은 add이고 입력으로 매개변수 a, b 2개의 값을 받으며 결괏값은 2개의 입력값을 더한 값이다.

매개변수와 인수

매개변수(parameter)와 인수(arguments)는 혼용해서 사용되는 헷갈리는 용어이므로 잘 정리를 해두어야 한다.
매개변수는 함수에 입력으로 전달된 값을 받는 변수를 의미하고 인수는 함수를 호출할 때 전달하는 입력값을 의미한다.

def add(a, b):   #a, b는 매개변수
    return a+b
    
print(add(3, 4)) #3, 4는 인수

함수의 형태

1. 일반적인 함수

입력값 --> 함수 --> 결과값

def add(a, b):
    result = a + b
    return result

위는 일반 함수의 전형적인 예이다.
add 함수는 2개의 입력값을 받아서 서로 더한 결과값을 돌려준다.

2. 입력값이 없는 경우

def say():
    return 'Hi'
...
    

say라는 이름이 함수가 있다. 이 say 함수의 경우 매개변수부분이 비어있다. 즉 입력값이 없는 것이다.

위의 함수를 사용하기 위해서는

>>> a = say()
>>> print(a)
Hi

위와 같이 할 수 있다. say()처럼 괄호 안에 아무 값도 넣지 않아야 한다. a = say() 처럼 작성하면 a에 Hi 문자열이 대입된다.

3. 결괏값이 없는 함수

>>> def add(a, b):
...	print("%d, %d의 합은 %d입니다." %(a, b, a+b))
...

결괏값이 없는 함수는 호출해도 돌려주는 값이 없기 때문에 다음과 같이 사용한다.

>>> add(3, 4)
3, 4의 합은 7입니다.

'3, 4의 합은 7입니다.' 라는 문장은 결괏값이 아닌 add 함수의 <수행할 문장>에 해당하는 부분일 뿐이다. 결괏값은 오직 return 명령으로만 돌려받을 수 있다.

4. 입력값도 결괏값도 없는 함수

>>> def say():
...	print('Hi')

위의 say( ) 함수는 입력 인수를 받는 매개변수도 없고 return문도 없으니 입력값도 결괏값도 없는 함수이다.

위의 함수는 다음과 같이 사용할 수 있다.

>>> say()
Hi

매개변수를 지정하여 사용하기

>>> def add(a, b):
...	return a+b

>>> result = add(a=3, b=7) #a에 3, b에 7을 전달
>>> print(result)
10

여러 개의 입력값을 받는 함수

>>> def add_many(*args):
...	result = 0
...	for i in args:
...	    result += i
...	return result

위의 예는 여러 개의 입력값을 모두 더하는 함수 add_many( )이다. *args처럼 매개변수 이름 앞에 *를 부이면 입력값을 전부 모아서 튜플로 만들어준다.

함수의 결괏값

>>> def add_and_mul(a, b):
...	return a+b, a*b

이 함수를 result = add_and_mul(3, 4)처럼 호출하면 결괏값은 a+ba*b 2개인데 결괏값을 받아들이는 변수는 result 하나만 있으므로 결괏값을 (a+b, a*b)로 돌려준다.

lambda

lambda는 함수를 생성할 때 사용하는 예약어로 def와 동일한 역할을 한다. 보통 함수를 한줄로 간결하게 만들 때 사용한다.

>>> add = lambda a, b: a+b
>>> result = add(3, 4)
>>> print(result)
7

add는 두 개의 인수를 받아 서로 더한 값을 돌려주는 lambda 함수이다.

lambda 예약어로 만든 함수는 return 명령어가 없어도 결괏값을 돌려준다.

profile
결국 무엇이든 해내는 사람 '김나연'입니다. 😎

0개의 댓글