✨함수
def open_account():
print("새로운 계좌가 생성되었습니다.")
def deposit(balance, money): # 입금
print("입금이 완료되었습니다. 잔액은 {}원 입니다.".format(balance+money))
return balance+money
def withdraw(balance, money): # 출금
if balance >= money: # 잔액이 출금액보다 많으면
print("출금이 완료되었습니다. 잔액은 {}원입니다.".format(balance-money))
return balance-money
else:
print("출금이 완료되지 않았습니다. 잔액은 {}원입니다.".format(balance))
return balance
def withdraw_night(balance, money): # 저녁에 출금
commission = 100 # 수수료 100원
return commission, balance-money-commission #튜플 형태로 반환
balance = 0
balance = deposit(balance,1000)
commission, balance = withdraw_night(balance,200)
print("수수료 {0}원이고, 잔액은 {1}원입니다.".format(commission,balance))
✨함수의 기본값
profile 함수가 호출될시 age,main_lang를 전달 받지 못했을 때는 기본값으로 설정된 나이와 주언어를 출력해준다.
def profile(name, age=17, main_lang="파이썬"):
print("이름: {0} \t나이: {1}\t주 사용 언어: {2}"\
.format(name,age,main_lang))
profile("김채호")
profile("이윤수")
✨함수의 키워드
함수에서 전달 받는 매개변수 값을 키워드로 이용해서 함수 호출해주면 순서가 뒤섞여 있어도 잘 전달된다.
def profile(name, age, main_lang):
print(name,age,main_lang)
profile(name="김채호", main_lang="파이썬",age=19)
profile(main_lang="자바", age=22, name="이윤수")
✨줄바꿈을 하지 않도록 설정하고 싶다면 end=" "
를 쓰자!
✨가변인자
*language
는 내가 넣고 싶은 만큼 값을 넣을 수 있다. for문에 lang 변수를 만들어서 language 안에 포함된 것들을 하나씩 출력하게끔 해준다.
def profile(name, age, *language):
print("이름: {0}\t나이: {1}\t".format(name, age), end=" ")
for lang in language:
print(lang, end=" ")
print()
profile("유재석", 20, "Python", "Java", "C", "C++", "C#", "Javascript")
profile("김태호", 25, "Kotlin", "Swift")
그럼 이제 자유롭게 profile 함수 안에서 불편함 없이 무제한으로 프로그래밍 언어를 추가할 수 있다.
✨지역변수와 전역변수
아래와 같이 코드를 쓰면 사진과 같이 gun 변수가 할당되지도 않았는데 사용되었다는 에러 문구가 뜬다. checkpoint 함수 내의 gun은 밖에 있는 gun이 아닌 해당 함수 안에서만 사용할 수 있는 변수이기 때문에 초기화가 되지 않아 사용이 불가하다.
gun = 10
def checkpoint(soldiers):
gun = gun - soldiers
print("[함수 내] 남은 총: {0}".format(gun))
print("전체 총: {0}".format(gun))
checkpoint(2)
print("남은 총: {0}".format(gun))
따라서, chekcpoint 함수 안에 global gun
을 써서 전역공간에 있는 gun을 사용해주면 된다. 밖에 10이라는 변수 값이 있으니 이 값을 이용해서 함수 출력을 하겠다는 말이다!
함수의 전달값으로 파라미터로 던져서 계산하고 반환값을 받아서 사용하는 방법도 있다.
gun = 10
def checkpoint_ret(gun, soldiers):
gun = gun - soldiers
print("[함수 내] 남은 총: {0}".format(gun))
return gun # return을 해줌으로써 바껴진 gun의 값을 외부로 던질 수 있다.
print("전체 총: {0}".format(gun))
gun = checkpoint_ret(gun,2) # 함수 내에서 계산되고 반환된 값을 받아서 다시 저장함
print("남은 총: {0}".format(gun))