[Python] TIL 04

jiyoung·2021년 11월 28일
0

함수

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))

0개의 댓글