본문 바로가기
Python/기초

[파이썬/Python] 함수의 정의와 활용에 대한 완벽 정리

by 모두의 케빈 2023. 7. 8.

함수의 정의와 선언


 

함수란 무엇인가. 수학에서는 입력값 x와  출력값 y의 관계를 함수라고 합니다. 파이썬의 세계에서도 함수란, 입력값을 받아서 어떠한 행동을 취하고 그 결과값을 반환(return)하는 코드를 함수라고 합니다.

왜 함수를 사용할까. 재사용성이 뛰어나고 가독성과 코딩의 효율성을 높여줍니다. 반복되는 코드가 필요한 경우, 매번 긴 코드를 적으면 코드가 길어집니다. 이런 경우, 함수를 정의해서 필요한 곳에 함수를 호출하면 코드의 길이가 짧아지고 에러가 발생해도 함수만 수정하면 되기 때문에 일의 능률이 높아집니다.

 

함수 선언하기: 파이썬에서 함수를 만드는 방법

함수를 선언하는 방법은 다음과 같습니다. 먼저 지금부터 함수를 정의하겠다는 약속어 def를 선언합니다. def는 definition의 약자입니다. 그리고 함수 이름을 작성합니다. 함수 이름 옆에는 소괄호와 세미콜론(:)이 있어야 합니다.

소괄호 안에는 함수에 들어오는 입력값을 받아주는 변수를 적어줍니다. 이 변수를 함수의 매개변수라고 합니다.

세미콜론(:)을 하고 코드를 작성하면 자연스럽게 들여 쓰기가 됩니다. 들여 쓰기는 어디까지가 함수의 코드인지를 구분해 주는 역할을 합니다.

마지막으로 return 명령어는 함수의 실행 결과값을 호출한 곳으로 반환해 주는 역할을 합니다. return은 반복문의 break와 같은 존재입니다. 함수의 코드가 실행되는 도중 return 명령어를 만나면 함수의 실행이 종료됩니다.

def 함수이름(매개변수):
    Action
    return Action의 결과값

 

두 개의 인자를 받아서 더한 값을 반환하는 함수를 만들어보겠습니다. 함수 이름은 add입니다. a와 b라는 두 개의 인자를 받습니다. 함수 안에서 실행하고 싶은 행동(Action)은 더하기 연산(+)입니다. 그리고 더한 값을 return으로 반환합니다.

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

 

 

함수를 사용하는 방법


 

너의 이름은? 함수를 사용하기 위해서는 함수의 이름을 부른다.

정의한 함수는 "함수이름(인자)"으로 사용할 수 있습니다. 함수를 정의할 때는 매개 '변수'이지만, 함수를 사용할 때는 '인자'라고 부릅니다.

인자의 개수는 매개 변수의 개수와 일치해야 합니다. add 함수는 두 개의 매개 변수(a, b)가 있으므로 사용하기 위해서는 동일하게 2개의 인자가 필요합니다.

add 함수의 최종 결과는 함수를 호출한 곳으로 반환(return)됩니다. 반환된 곳에는 대입 연산자(=)가 있으므로, add 함수의 결과는 add_value에 대입됩니다. 그래서 add_value 값을 출력하면 15가 나오는 것을 볼 수 있습니다.

add_value = add(10,5) # 함수의 실행 결과는 add_value에 대입된다.
print(add_value)

# 위 코드의 결과값
15

 

 

 

입력값이 없거나 값을 반환할 필요가 없는 함수


 

함수는 입력값을 받아서, 행동을 취하고 그 행동을 반환한다고 했습니다. 이는 일반적인 정의입니다. 어떤 행동을 하느냐에 따라서, 입력값이 필요 없거나 return을 사용하지 않는 경우도 있습니다.

누군가에게 저를 소개하는 함수를 만들었다고 가정하겠습니다. 'introduce_myself' 함수는 저에 대한 정보를 출력하는 함수입니다. 매개변수와 return은 사용하지 않았습니다.

def introduce_myself():
    print("My Name is Kevin.")
    print("My dream is being a good Bloger.")
    print("Thank you!")

 

함수를 호출하여 변수 a에 대입해 보겠습니다. 우선 함수가 호출된 순간, print문이 실행됩니다. 그러나, 아무것도 반환(return) 하지 않으므로 변수 a의 값을 출력하면 None이 나오게 됩니다.

a = introduce_myself()
print('------')
print(a)

# 위 코드의 결과값
My Name is Kevin.
My dream is being a good Bloger.
Thank you!
------
None   # <----- 중요!!!! 반환(return)이 없으므로 a에는 아무 값도 없음(None)

 

만약 결과값을 반환할 필요가 없는 함수이지만, 끝까지 잘 실행되었는지를 확인하고 싶다면 return 0을 해서 결과값이 0인지를 확인하는 방법도 있습니다. 

def introduce_myself():
    print("My Name is Kevin.")
    print("My dream is being a good Bloger.")
    print("Thank you!")
    return 0
    
    
a = introduce_myself()
print('------')

if a == 0:
    print("함수가 성공적으로 잘 실행되었습니다.")
    
    
# 위 코드의 결과값
My Name is Kevin.
My dream is being a good Bloger.
Thank you!
------
함수가 성공적으로 잘 실행되었습니다.

 

 

댓글