[Python] TIL 04


n.関数
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))

置換関数のデフォルト
プロファイル関数を呼び出したときに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変数を作成し、言語に含まれる内容を1つずつ出力します.
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変数が割り当てられていないエラー文が図のように表示されます.チェックポイント関数内の銃は外の銃ではなく、その関数内でしか使用できない変数なので初期化せず使用できません.
gun = 10

def checkpoint(soldiers):
    gun  =  gun - soldiers
    print("[함수 내] 남은 총: {0}".format(gun))

print("전체 총: {0}".format(gun))
checkpoint(2)
print("남은 총: {0}".format(gun))

従って、chekpoint関数ではglobal gun、グローバル空間ではgunを用いることができる.外には10という変数値があるので、この値を利用して関数出力を行います!

もう1つの方法は、関数の伝達値をパラメータとして計算し、戻り値を受け入れることです.
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))