함수의 정의, 함수의 호출
- 프로그래밍을 진행하다보면 동일한 코드를 몇 번이고 동일하게 처리해줘야 하는 경우가 있다.
- 함수란 인수(변수를) 입력받아 코드를 실행하고 결과물을 출력하도록 하는 입력값과 출력값의 관계를 의미
- 쉽게 말해 입력값을 받고 출력값을 계싼하는 기계 혹은 틀
- 파이썬에서는
def
라는 구문을 통해서 함수를 정의할 수 있으며, 함수를 작성하는 행위를 ‘함수를 정의한다’ 라고 표현 함
# 함수의 정의
def 함수명(인수 목록):
실행구문
...
return 반환값
# 함수의 호출
함수명(인수 목록)
간단한 함수 예시
# 반환값 없이 출력만 실행
def hello(var): # 정의
print('Hello', var)
hello('python') # 호출
'''
Hello python
'''
# 함수의 반환값을 변수로써 저장
def sum_num(num1, num2): # 정의
print(f"num1 : {num1}, num2 : {num2}")
return num1 + num2 # 반환
sum_num_12 = sum_num(3,6) # 호출
print(f"sum : {sum_num_12}")
'''
num1 : 3, num2 : 6
sum : 9
- 함수의 정의를 함수의 호출보다 먼저 시행해야하는 것이 원칙이긴하지만, 실제로는 동일한 코드 파일 안에서는 호출을 먼저하고 정의를 뒤에 해주어도 동작 오류가 발생하지는 않긴함
- 이는 객체지향프로그래밍(OOP)의 특징을 가지기 때문이라 설명할 수 있는데, 이에 대한 내용은 뒤에 다시 설명할 예정)
- 함수를 한번 정의하면 해당 함수는 몇번이고 호출하여 재사용할 수 있기 때문에 반복적으로 작업을 수행하는 경우 훨씬 효율적인 프로그래밍이 가능해짐
2. 함수의 인수(argument)
- 함수에게 전달하는 정보를 인수(argument)라하며, 이는 매개변수(parameter)라고도 불림
- 함수를 정의할때, 함수명 뒤에 소괄호
()
에 인수를 담아서 함수에 전달하게 됨
- 소괄호에 묶어서 전달한다는 것은
튜플
의 형태로 값을 전달한다는 것과 같은 의미이기 때문에, 함수를 정의할 때의 인수의 순서
와 함수를 호출할 때의 인수의 순서
가 일치해야함을 의미함
- 순서가 중요한 것은 인수의 변수명을 지정하지 않고 값만을 넣어서 호출하는 경우에 해당하는 것이고, 호출시 변수명을 직접 적어주는 경우엔 순서를 맞춰서 넣어줄 필요는 없음
- 다만 일부의 변수만을 따로 지정하는 경우엔, 앞 쪽 변수는 순서를 반드시 맞춰줘야하고, 나머지 변수들은 기본값이 지정되지 않은 경우 반드시 값을 정의해 주어야 함
- 모든 함수가 인수를 반드시 가져야 할 필요는 없어서, 인수를 따로 정의하지 않고도 함수를 정의하고 호출할 수 있음
- 이때는 호출할 때 어떠한 인수도 넣지 않아야 오류가 발생하지 않음
# 인수(매개변수)를 지정하여 함수를 정의하기
def sums(num1, num2, num3):
sum_num = num1 + num2 + num3
return sum_num
# 순서를 반드시 맞추어서 호출
sum_1 = sums(3, 6, 9)
print(sum_1)
'''
18
'''
# 앞쪽은 순서를 맞추어주고, 나머지는 순서 관계 없이 직접 지정
sum_2 = sums(3, num3=9, num2=6)
print(sum_2)
'''
18
'''
# 인수의 기본값을 미리 지정하여 정의하는 경우
def sums(num1, num2, num3=10):
sum_num = num1 + num2 + num3
return sum_num
# 기본값이 지정되지 않은 변수는 반드시 지정해야함
sum_1 = sums(1, 2) # num3=10
print(sum_1)
'''
13
'''
# 기본값이 지정되어도 변수값을 새로 지정할 수 있음
sum_2 = sums(1, 2, 5)
print(sum_2)
'''
8
'''
sum_3 = sums(1, num2=3)
print(sum_3)
'''
14
- Python에서는 함수를 정의할 때 인수 앞에 *를 붙임으로써 콤마
,
로 구분한 인수를 한번에 여러개 전달할 수 있으며, 이때 전달된 변수는 함수 내부에서 튜플로 저장됨
- 이러한 경우 일반적으로는
args
라는 이름으로 설정함