파이썬 공부중/파이썬 기초

Python 기초 #7. 전달값과 반환값, 기본값, 지역변수와 전역변수

책다니엘 2023. 3. 8. 02:12
# # 전달값과 반환값

# def open_account():
#     print("새로운 계좌가 생성되었습니다.")

# def deposit(balance, money):
#     print("입금이 완료되었습니다. 잔액은 {0}원입니다.".format(balance + money))
#     return balance + money

# def withdraw(balance, money):
#     if balance >= money :
#         print("출금이 완료되었습니다. 잔액은 {0}원입니다".format(balance - money))
#         return balance - money
#     else :
#         print("출금이 완료되지 않았습니다. 잔액은 {0}원입니다.".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, 500)
# print("수수료는 {0}원이며, 잔액은 {1}원입니다".format(commission, balance))


# 기본값

def profile(name, age, main_lang):
    print("이름: {0}\t나이: {1}\t주사용언어: {2}" \
          .format(name, age, main_lang))

profile("유재석", 20, "파이썬")
profile("김태호", 25, "자바")

# 같은 학년, 같은 반, 같은 사용언어일 경우

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 = 20)
profile(main_lang = "자바", age = 25, name = "김태호")


# 가변 인자

# def profile(name, age, lang1, lang2, lang3, lang4, lang5):
#     print("이름 : {0}\t나이 : {1}\t".format(name, age), end = " ") # end 값을 정해주면 print가 끝난 다음 줄을 바꾸지 않고 ""안에 있는 값이 출력되고 이어서 써짐
#     print(lang1, lang2, lang3, lang4, lang5)

# profile("유재석", 20, "Python", "Java", "C", "C++", "C#")
# profile("김태호", 25, "Kotlin", "Swift","","","")

def profile(name, age, *language):
    print("이름 : {0}\t나이 : {1}\t".format(name, age), end = " ") # end 값을 정해주면 print가 끝난 다음 줄을 바꾸지 않고 ""안에 있는 값이 출력되고 이어서 써짐
    for lang in language:
        print(lang, end = " ")
    print()

profile("유재석", 20, "Python", "Java", "C", "C++", "C#")
profile("김태호", 25, "Kotlin", "Swift","","","")


# 지역변수와 전역변수

gun = 10

# def checkpoint(soldiers): # 군인들이 지역근무를 한다면
#     gun = gun - soldiers
#     print("[함수 내] 남은 총 : {0}".format(gun))

# print("전체 총 : {0}".format(gun))
# checkpoint(2) # 2명이 경계근무를 나감
# print("남은 총 : {0}".format(gun))  # 이 상태로는 호출이 안 됨


# def checkpoint(soldiers): # 군인들이 지역근무를 한다면
#     global gun # 전역 공간에 이미 설정된 gun 사용, 복잡해지므로 일반적으로 사용되지 않는 방법
#     gun = gun - soldiers
#     print("[함수 내] 남은 총 : {0}".format(gun))

# print("전체 총 : {0}".format(gun))
# checkpoint(2) # 2명이 경계근무를 나감
# print("남은 총 : {0}".format(gun))  


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

print("전체 총 : {0}".format(gun))
gun = checkpoint_ret(gun, 2) # 2명이 경계근무를 나감
print("남은 총 : {0}".format(gun))