본문 바로가기
파이썬/기초 문법

[파이썬]함수 이해하기 - 함수의 기본 구조와 특성

by 코키드 Cokid 2022. 10. 8.
반응형

이번 포스팅에선 함수의 기본에 대해 알아본다. 함수의 만드는 방법과 어떤 형태의 함수들이 있는지 알아보자.

 

함수 만들기 - 예약어 def

함수란 무엇인가

앞선 포스팅들에서 함수라는 단어가 계속 언급되었다. 함수란 무엇일까? 이미 학창 시절 수학 시간에 함수를 대해 배웠기에 함수가 무엇인지 짐작하는 건 어렵지 않다. 함수란 입력값을 넣으면 결괏값을 내주는 것을 말한다.

비유를 들자면 믹서기로 오렌지 쥬스를 만들 때, 오렌지 주스는 입력값, 오렌지 주스가 출력 값이다. 오렌지를 오렌지(input)를 넣었을 때 오렌지주스(output)를 결괏값으로 돌려주는 믹서기(function)가 함수가 되는 것이다.

만약 믹서기 함수에 오렌지가 아닌 사과를 입력해준다면 사과쥬스를 출력해줄 것이다.

돌멩이를 넣으면 믹서기 함수에서 에러가 발생할 수도 있다.

파이썬에서도 함수들을 통해서 특정 과정을 계속 반복하지 않고 빠르고 간단하게 처리할 수 있다.

 

함수 만들기

def 함수명():
    수행할 문장1
    수행할 문장2
    …

함수는 if문이나 while문과 비슷하다. 예약어 def 뒤에 함수명을 입력하 괄호를 닫은 후 콜론을 사용한다. 그리고 다음 문장부턴 들여쓰기를 한 뒤 수행할 문장을 적어준다. 함수의 모습은 다양하지만 위의 모습이 함수의 기본적인 형태다.

 

감을 잡기 위해 간단한 예시를 들어보겠다.

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

result1 = add(2, 3) # 함수의 반환값 입력 변수에 입력
result2 = add(4, 5)
result3 = add(3, 7) 

print(result1, result2, result3) # 결과 확인
print(type(add)) # add의 자료형 확인
#결과 출력
5 9 10
<class 'function'>

위 코드를 보면 함수 add는 a, b를 매개변수로 받아 a + b를 c에 대입한 뒤 c를 반환한다. 2와 3을 인수로 함수 add에 전달하고 2+3을 c에 대입한 뒤 5를 반환하고 result 변수에 입력을 했다. add의 자료형은 function이다.

여기서 매개변수라 함은 입력된 값을 전달받는 변수를 말하고 인수로 함은 입력된 값을 함수로 전달해주는 변수를 말한다. 매개변수는 parameter라고도 하고 인수는 argument라고도 하는데, 용어가 혼용되어 사용되는 경우가 많다.

 

 

함수의 형태

함수는 다양한 형태가 있는데, 크게 네 가지로 구분해보겠다.

 

입력값과 출력값이 있는 함수

섭씨온도를 받아 화씨로 출력해주는 함수를 만들어보자.

def to_fahr(celcious):
    fahr = (celcious * 9/5) + 32
    return fahr

result = to_fahr(33)
print(result)
#결과 출력
91.4

위 예문은 가장 기본적인 형태로 입력값과 출력값을 모두 가지는 함수이다. 함수를 사용할 때 인수에 값을 입력해야 하고 함수를 만들 때도 값이 있어야 한다. 함수에서 코드를 실행하고 출력할 값을 return 반환한다.

위의 to_fahr 33을 인수로 받아 계산을 한 후 화씨온도를 반환한다.

 

입력값만 있고 출력값은 없는 함수

# mod1.py
def to_fahr(celcious):
    fahr = (celcious * 9/5) + 32
    print(fahr)

result = to_fahr(33)
print(result)
#결과 출력
91.4
None

입력값만 있고 출력값이 없는 함수도 있다. 위 예문은 33을 인수로 받아 마찬가지로 화씨를 계산하지만 return이 없다.

print 함수로 결과를 출력하지만 return 값이 없기 때문에 변수 result에 None값이 입력된다.

 

입력값과 출력값 모두 없는 함수

# mod1.py
def to_fahr():
    print('''
*********화씨 구하는 공식*********
Fahrenheit = (Celcious x 9/5) +32
    ''')

to_fahr()
#결과 출력
*********화씨 구하는 공식*********
Fahrenheit = (Celcious x 9/5) +32

위처럼 입력값 출력값 모두 없는 함수도 있다.

 

입력값은 없고 출력값만 있는 함수

# mod1.py
def to_fahr():
    fahr = ('''
*********화씨 구하는 공식*********
Fahrenheit = (Celcious x 9/5) +32
    ''')
    return fahr

result = to_fahr()
print(result)
#결과 출력
*********화씨 구하는 공식*********
Fahrenheit = (Celcious x 9/5) +32

위처럼 입력값과 출력값이 있는 함수는 사실 입력값과 출력값 모두 없는 경우와 크게 다르지 않다. 입력값으로 함수의 반환값이 달라지기 않기 때문에 입력값이 필요 없기 때문이다. 다만 정해진 결과를 변수에 담을 수 있게 반환값이 존재한다는 정도의 차이가 있는 것 같다.

 

lambda로 함수 선언하기

lambda로 간단하게 함수 선언하기

if문과 for문을 한 줄로 표현했듯이 함수의 선언도 간단하게 표현할 수 있다. 파이썬의 예약어 lambda를 이용해 이를 함수를 간단하게 선언해보자. 우선 일반적인 형태의 함수를 보자.

def to_fahr_def(celcious):
    fahr = (celcious * 9/5) + 32
    return fahr

가장 익숙한 형태로 매개변수는 celcious, 반환값은 fahr이다.  직관적으로 이해하기 쉽다.

 

to_fahr_lamb = lambda temparture: (temparture * 9/5) + 32

위 예문은 lambda로 선언한 함수다. lambda로 함수를 선언하는 구조는 함수명 = lambda 매개변수: 반환값이다.

예문의 함수 to_fahr_lamb의 함수명은 to_fahr_lamb, 매개변수는 temparture, return값은 (temparture*9/5)+32이다.

선언한 함수를 사용해보자.

 

temperature = 33
print('섭씨{}도 >>> 화씨{}도'.format(temperature, result_lamb))
#결과 출력
섭씨33도 >>> 화씨91.4도

 

 

반응형

댓글