저번 강의에 이어서 이번에는 함수에 대해서 배웠다.
함수를 생성하기 위해서는 define 기능을 통해서 함수를 정의하여 주어야 한다. 아래 가벼운 예시와 같이 정의할 수 있다.
def open_account():
print("새로운 계좌가 생성되었습니다.")
위와 같은 함수를 통해서 우리는 open_account라는 함수(계좌)를 생성하였다.
이제 본격적으로 계좌에 잔액과 입출금 기능을 구현하여 보겠다.
우선 함수를 다시 정의하여 보자.
def deposit(balance, money): #입금
print("입금이 완료되었습니다. 잔액은 {0}원입니다.".format(balance + money))
return balance + money
위의 함수를 통해서 우리는 deposit이라는 함수를 정의하였다. 두 가지 인자인 balance(잔액)과 money(입금액)을 바탕으로 deposit함수가 구성된다.
그 후 특정 금액을 입력하면 balance와 money를 합한 값이 반환된다.
일단 초기 balance(잔액)을 0원으로 설정하고, 1000원을 입금했다고 가정하자.
balance = 0 #잔액
balance = deposit(balance, 1000)
print(balance)
위의 함수를 실행하면 아래와 같다.

이어서 출금 기능을 구현하여 보자.
출금 역시 함수를 정의하여 주어야 한다.
def withdraw(balance, money): # 출금
if balance >= money: #잔액이 출금액보다 많으면
print("출금이 완료되었습니다. 잔액은 {0}원입니다.".format(balance - money))
return balance - money
else:
print("잔액이 부족합니다. 잔액은 {0}원입니다.".format(balance))
return balance
위와 같이 출금 함수를 구현하여 주었다. 이제 실제 함수를 실행하여 보자.
1000원을 입금하고 이어서 2000원 인출을 시도하여 보자. 아래와 같이 balance를 작성하여 주면 된다.
balance = 0 # 잔액
balance = deposit(balance, 1000)
balance = withdraw(balance, 2000)
결과는 아래와 같다.

입금은 정상적으로 진행되지만, 잔액이 부족하기 때문에 출금은 되지 않는다. 이때 입금액을 상향하면 정상적으로 출금까지 완료된다.

함수 기능에 약간의 수정을 가하여 수수료가 붙는 상황을 가정하여 보자. 수수료가 필요한 출금 함수는 아래와 같이 정의할 수 있다. 수수료 변수가 추가되었으므로 return도 앞선 return들과는 달리 2개의 인자로 구성되어야 한다.
def withdraw_night(balance, money): #영업시간 이후 출금
commision = 100 #수수료 100원
return commision, balance - money - commision
영업시간 이후 출금하면 100원이 수수료로 붙는 것을 가정하였다. 이에 맞춰 balance 함수도 아래와 같이 조정되어야 한다.
balance = 0 # 잔액
balance = deposit(balance, 1000)
commision, balance = withdraw_night(balance, 500)
print("출금이 완료되었습니다. 수수료는 {0}원이며, 잔액은 {1}원입니다.".format(commision, balance))
이를 실행하면 아래와 같다.

함수 강의는 앞선 for/while/if 등의 문법에 비해서는 많이 어려웠다. 사실 수업을 들으면서 이해가 쉬이 가지 않아 몇번이고 돌려본 부분이 많았다. 앞으로 계속해서 함수와 관련된 수업들이 이어지는데 이번 강의를 확실히 이해하고 넘어가야 이어지는 강의들도 쉽게 배울 수 있을 것이라는 생각이 들었다. 성장일지와 별개로 파이썬 함수에 대해서는 따로 독학을 이어나가려고 한다.