함수란? 특별한 목적을 수행하기 위해 독립적으로 설계된 소스코드들의 집합이라고 말합니다.
함수 만들기
def는 함수를 만들 때 사용하는 예약어로 def 뒤에 함수이름을 정의하여 함수를 만들수 있습니다. 함수 이름뒤에 ":"을 입력하고 다음 줄부터 들여쓰기를 하여 소스코드를 작성하면 됩니다.
def 함수명(매개변수): 문장1 문장2 |
함수의 종류
함수1 (매개변수도 없고 반환값도 없는 함수) | 함수2 (매개변수는 있고 반환값은 없는 함수) |
def func(): 명령어 처리 |
def func(a): 명령어 처리 |
함수3 (매개변수는 없고 반환값이 있는 함수) | 함수4 (매개변수도 있고 반환값도 있는 함수) |
def func(): 명령어 처리 return 값 |
def func(a): 명령어 처리 return 값 |
함수5 (함수안에서 함수를 호출하는 재귀함수) |
함수1
## 함수 선언 부분 def func(): for i in range(1, 11): print('%d' % i, end= ' ')
## 메인 코드 부분 print('함수호출') func() |
실행 결과 함수호출 1 2 3 4 5 6 7 8 9 10 |
함수2
## 함수 선언 부분 def func(a): for i in range(1, a+1): print('%d' % i, end= ' ')
## 메인 코드 부분 print('함수호출') func(10) |
실행 결과 함수호출 1 2 3 4 5 6 7 8 9 10 |
함수 3
## 함수 선언 부분 def func(): for i in range(1, 11): s = s + i
## 메인 코드 부분 print('함수호출') print('%d' % func()) |
실행 결과 함수호출 55 |
함수 4
## 함수 선언 부분 def func(a): for i in range(1, a + 1): s = s + i
## 메인 코드 부분 print('함수호출') print('%d' % func(10)) |
실행 결과 함수호출 55 |
함수 5 (재귀함수)
## 함수 선언 부분 def func(a):
## 메인 코드 부분 print('함수호출') print('%d' % func(5)) |
실행 결과 함수호출 15 5 + func(4) 4 + func(3) 3 + func(2) 2 + func(1) 1 |
예제]
커피 자판기이 프로그램을 만들어 보자
## 전역 변수 선언 부분 coffee = 0
## 함수 선언 부분 def coffee_machine(button) : print() print('#1.(자동으로) 뜨거운 물을 준비한다.'); print('#2.(자동으로) 종이컵을 준비한다.');
if button == 1: print('#3. (자동으로) 보통커피를 탄다.') elif button == 2: print('#3. (자동으로) 설탕커피를 탄다.') elif button == 3: print('#3. (자동으로) 블랙커피를 탄다.') else: print('#3. (자동으로) 아무거나 탄다.')
print('#4.(자동으로) 물을 붓는다.'); print('#5.(자동으로) 스푼으로 젓는다.'); print()
## 메인 코드 부분 coffee = int(input('어떤 키피 드릴까요?(1:보통, 2:설탕, 3:블랙) ')) coffee_machine(coffee) print('손님~커피 여기 있습니다.') |
실행 결과
어떤 키피 드릴까요?(1:보통, 2:설탕, 3:블랙) 1
#1.(자동으로) 뜨거운 물을 준비한다. #2.(자동으로) 종이컵을 준비한다. #3. (자동으로) 보통커피를 탄다. #4.(자동으로) 물을 붓는다. #5.(자동으로) 스푼으로 젓는다.
손님~커피 여기 있습니다. |
A, B, C손님이 커피를 주문하는 커피 자판기 프로그램을 만들어 보자.
## 전역 변수 선언 부분 coffee = 0
## 함수 선언 부분 def coffee_machine(button) : print() print('#1.(자동으로) 뜨거운 물을 준비한다.'); print('#2.(자동으로) 종이컵을 준비한다.');
if button == 1: print('#3. (자동으로) 보통커피를 탄다.') elif button == 2: print('#3. (자동으로) 설탕커피를 탄다.') elif button == 3: print('#3. (자동으로) 블랙커피를 탄다.') else: print('#3. (자동으로) 아무거나 탄다.')
print('#4.(자동으로) 물을 붓는다.'); print('#5.(자동으로) 스푼으로 젓는다.'); print()
## 메인 코드 부분 coffee = int(input('A손님, 어떤 키피 드릴까요?(1:보통, 2:설탕, 3:블랙) ')) coffee_machine(coffee) print('A손님~ 커피 여기 있습니다.')
coffee = int(input('B손님, 어떤 키피 드릴까요?(1:보통, 2:설탕, 3:블랙) ')) coffee_machine(coffee) print('B손님~ 커피 여기 있습니다.')
coffee = int(input('C손님, 어떤 키피 드릴까요?(1:보통, 2:설탕, 3:블랙) ')) coffee_machine(coffee) print('C손님~ 커피 여기 있습니다.') |
A손님, 어떤 키피 드릴까요?(1:보통, 2:설탕, 3:블랙) 2
#1.(자동으로) 뜨거운 물을 준비한다. #2.(자동으로) 종이컵을 준비한다. #3. (자동으로) 설탕커피를 탄다. #4.(자동으로) 물을 붓는다. #5.(자동으로) 스푼으로 젓는다.
A손님~ 커피 여기 있습니다. B손님, 어떤 키피 드릴까요?(1:보통, 2:설탕, 3:블랙) 1
#1.(자동으로) 뜨거운 물을 준비한다. #2.(자동으로) 종이컵을 준비한다. #3. (자동으로) 보통커피를 탄다. #4.(자동으로) 물을 붓는다. #5.(자동으로) 스푼으로 젓는다.
B손님~ 커피 여기 있습니다. C손님, 어떤 키피 드릴까요?(1:보통, 2:설탕, 3:블랙) 3
#1.(자동으로) 뜨거운 물을 준비한다. #2.(자동으로) 종이컵을 준비한다. #3. (자동으로) 블랙커피를 탄다. #4.(자동으로) 물을 붓는다. #5.(자동으로) 스푼으로 젓는다.
C손님~ 커피 여기 있습니다. |
두개의 정부를 입력받아서 합계를 반환하는 plus()함수를 만들어 보자.
## 함수 선언 부분 def plus(v1, v2): result = 0 result = v1 + v2 return result
## 전역변수 선언 hap = 0
## 메인 코드 부분 hap = plus(100, 200) print('100과 200의 plus() 함수 결과는 %d' % hap)
|
실행 결과 100과 200의 plus() 함수 결과는 300 |
두 숫자로 덧셈, 뺄셈, 곱셈, 나눗셉을 계산하는 함수를 만들어 보자.
## 함수 선언 부분 def calc(v1, v2, op): result = 0 if op == '+': result = v1 + v2 elif op == '-': result = v1 - v2 elif op == '*': result = v1 * v2 elif op == '/': result = v1 / v2
return result
## 전역변수 선언 res = 0
## 메인 코드 부분 oper = input("계산을 입력하세요(+,-,*,/) : ") var1 = int(input("첫 번째 숫자 입력 : ")) var2 = int(input("두 번째 숫자 입력 : "))
res = calc(var1, var2, oper)
print('계산기 : %d %s %d = %d' %(var1, oper, var2, res)) |
실행 결과 계산을 입력하세요(+,-,*,/) : + 첫 번째 숫자 입력 : 10 두 번째 숫자 입력 : 20 계산기 : 10 + 20 = 30
실행 결과 계산을 입력하세요(+,-,*,/) : * 첫 번째 숫자 입력 : 20 두 번째 숫자 입력 : 40 계산기 : 20 * 40 = 800
실행 결과 계산을 입력하세요(+,-,*,/) : / 첫 번째 숫자 입력 : 45 두 번째 숫자 입력 : 10 계산기 : 45 / 10 = 4 |
지역변수와 전역변수
지역변수는 함수안에서 선언된 변수를 지역변수라 한다.
전역변수는 함수밖에서 선언된 변수로 전역으로 사용할 수 있는 변수이고 Global 예약어로 선어된 변수도 전역변수이다.
## 함수 선언 부분 ## def func1() : a = 10 # 지역 변수 print("func1()에서 a값 %d" % a)
def func2() : print("func2()에서 a값 %d" % a)
## 전역 변수 선언 부분 ## a = 20 # 전역 변수
## 메인 코드 부분 ## func1() func2() |
실행 결과 func1()에서 a값 10 func2()에서 a값 20 |
gloabal 예약어
global 변수를 만들면 함수안에서 만든 변수도 전역변수로 취급된다.
## 함수 선언 부분 ## def func1() : global a # 이 함수 안에서 a는 전역 변수 a = 10 print("func1()에서 a값 %d" % a)
def func2() : print("func2()에서 a값 %d" % a)
## 함수 변수 선언 부분 ## a = 20 # 전역 변수
## 메인 코드 부분 ## func1() func2() |
실행 결과 func1()에서 a값 10 func2()에서 a값 10 |