목차
함수(function)란 수학에서 배운 함수와 같은 의미를 같습니다. 수학에서 배운 함수를 다시 생각해 보면 예를 들어 f(x) = 2x + 1이라는 함수에 f(x)에 2를 넣으면 결괏값은 5가 됩니다. x에 값을 넣으면 내부에 기능을 수행해 결괏값이 나옵니다. 프로그램 함수도 수학적 함수와 같은 동작을 합니다. 입력으로 부터 값을 넣으면 함수 내부에 정의된 기능을 수행한 후 결괏값을 출력합니다.
함수를 사용하는 이유는 우리가 프로그래밍을 하다 보면 반복적으로 어떠한 기능을 사용할 때가 있습니다. 그 반복적으로 수행하는 기능을 하나로 묶어 우리가 사용할 때만 함수를 호출에 기능을 사용하는 것입니다. 또 하나에 사용하는 이유는 코드를 좀 더 유연하게 볼 수 있기 때문입니다.
함수 정의:
def 함수 명(매개변수):
내용.....
함수를 정의할 때는 def 라는 예약어를 사용해야 합니다. 그런 다음 def 뒤에 함수 명을 정의하고 소괄호()를 작성해 줍니다. 소괄호 안에는 매개변수를 작성해줍니다. 마지막으로 :(콜론)을 작성해 주면 됩니다.
함수 호출:
함수 명(인자)
함수 호출은 간단합니다. 호출할 함수 명 소괄호 안에() 입력할 값을 넣주면 됩니다.
매개 변수: 매개 변수는 함수가 호출하는 부분에서 입력한 값을 함수정의에서 받는 변수입니다.
인자: 인자는 함수 호출 부분에 입력 값입니다.
예)
# 정의
def 함수명(매개변수) <--- 매개변수
내용....
------------------------------------------
# 호출
함수 명 (인자) <--- 인자
예제)
# 함수 정의
def what_time(hour, minute, second):
print(f'{hour}시 {minute}분 {second}초')
# 함수 호출
what_time(20, 11, 30) # 20시 11분 30초
what_time(1, 15, 25) # 1시 15분 25초
출력 결과:
20시 11분 30초
1시 15분 25초
함수는 여러 번 호출이 가능합니다.
return 사용법
return(리턴)은 함수에서 나온 결괏값을 호출한 곳으로 돌려주는 명령어입니다.
return(리턴)을 사용하는 이유는 다른 영역에서 출력하고자 할 때나 함수에 결괏값을 통해 다른 기능을 처리하려고 할 때 return(리턴) 명령어를 사용합니다.
예제)
# 1을 전달하면, '안녕하세요'
# 2를 전달하면, 'hello'
def hi(n):
if n == 1:
return '안녕하세요'
elif n == 2:
return 'hello'
else:
return '번호를 잘 못 입력하셨습니다.'
a = hi(2)
print(a)
출력 결과:
hello
return(리턴) 명령어를 사용할 때는 함수 호출 부분에서 반환값을 받을 변수를 선언해야 합니다.
return(리턴) 명령어를 사용하지 않고도 함수 안에 변수를 함수 밖에서 사용할 수 있습니다.
일반적인 변수는(지역 변수)는 자기 자신 영역에서만 사용 가능합니다.
즉 함수에서의 변수는 함수에서만 사용이 가능하고 함수 밖에서는 사용이
불가능합니다. 만약 같은 이름을 가진 변수가 존재하더라고 함수 안과 함수
밖에 있는 변수는 서로 다른 메모리를 갖는 변수이기 때문에 값이 다릅니다.
global 명령어: global 명령어를 사용하면 그 변수는 전역변수가 됩니다. 전역변수는 어느 영역에 있든 같은 메모리 주소이기 때문에 같은 값을 가집니다. 하지만 프로그래밍을 할 때 global 명령어를 사용하지 않는 것을 권장합니다.
예제) global 명령어를 사용하지 않을 경우
result = 0
def global_test(a):
result = a + 1
print(f'함수 안 result = {result}')
global_test(5)
print(f'함수 밖 result = {result}')
출력 결과:
함수 안 result = 6
함수 밖 result = 0
일반 변수(지역변수)일 때는 함수 안과 함수 밖에 선언된 변수의 메모리 주소가 다르기 때문에 다른 값이 출력됩니다.
예제) global 명령어 사용하기
result = 0
def global_test(a):
global result
result = a + 1
print(f'함수 안 result = {result}')
global_test(5)
print(f'함수 밖 result = {result}')
출력 결과:
함수 안 result = 6
함수 밖 result = 6
global 명령어를 사용할 경우 함수 밖과 함수 안에 변수는 서로 같은 메모리 주소이기 때문에 같은 결괏값을 가집니다.
return(리턴) 명령어는 프로그램을 종료할 때도 사용합니다.
예제)
# 저금통에 돈을 저금하는 예제, 저금통에 저금만 가능하고 돈을 빼는 건 불가능하다.
def piggy(money):
if money <= 0: # 조건문에서는 실행할 수 없는 걸 먼저 정의하는 것을 선호한다.
print(f'{money}원은 저금할 수 없습니다.')
return # 반환 값이 없는 return은 함수의 종료를 의미한다.
else:
print(f'{money}원 저금되었습니다.')
piggy(1000)
piggy(-2000) # 실행되지 않도록!
출력 결과:
1000원 저금되었습니다.
-2000원은 저금할 수 없습니다.
파이썬 함수 여러 가지 사용법 예제
1. 파이썬에서는 매개변수를 지정해서 값을 부여할 수 있습니다.
예제) 매개변수를 지정해서 출력
def add(a, b):
print(f'a = {a}, b = {b}, a + b = {a+b}')
add(a=3, b=4)
출력 결과
a = 3, b = 4, a + b = 7
def 함수 명(*매개변수):
예제) 정해지지 않은 여러 개의 값을 모두 더 더해서 출력
```python
def add(*result):
sum = 0
for i in result:
sum += i
return sum
a = add(1, 3, 5, 7, 9)
b = add(2, 4, 6, 8, 10)
print(f'a = {a}')
print(f'b = {b}')
출력 결과
a = 25
b = 30
예제)
def add_sub(a, b):
return a + b, a - b
result = add_sub(5, 2)
print(result)
print(type(result))
출력 결과:
(7, 3)
<class 'tuple'>
반환받은 변수가 하나일 경우 타입을 확인해 보면 tuple이라는 걸 확인할 수 있습니다. 즉 두 개의 반환 값을 받아야 되기 때문에 tuple 타입으로 값을 받게 됩니다.(함수의 특징: 함수의 결괏값은 언제나 하나이다.)
예제) 결괏값을 두 변수를 담고 싶다면
def add_sub(a, b):
return a + b, a - b
result1, result2 = add_sub(5, 2)
print(f'result1(a + b) = {result1}')
print(f'result2(a - b) = {result2}')
print(f'reulst1 type = {type(result1)}')
print(f'reulst2 type = {type(result2)}')
출력 결과:
result1(a + b) = 7
result2(a - b) = 3
reulst1 type = <class 'int'>
reulst2 type = <class 'int'>
예제)
def student(name, age=17):
print(f'이름: {name}, 나이: {age}')
student('홍길동')
출력 결과:
이름: 홍길동, 나이: 17
이상으로 파이썬 함수에 대해 알아봤습니다. 잘못된 부분이나 부족한 부분 있다면 피드백 감사하겠습니다!!!