• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

withdraw_night 함수관련 return의 튜플형식에 대해 질문있어요.

20.09.16 23:43 작성 조회수 169

0

안녕하세요. 강의 잘 보고있습니다.

withdraw_night 함수에서 리턴을 튜플형식으로

return commission, balance - money - commission

처럼 정리해 주셨는데 튜플형식으로 서술하셨는지, 왜 commission 변수가 withdraw_night 함수 안에 들어있는지 궁금합니다.

돌머리로는 이해가 가지않아서 제가 이해하기 쉬운 방식으로, commission 변수를 balance 변수처럼 외부에서 선언하였고  withdraw_night의 리턴값도 return balance - money - commission으로 한 뒤,

다시 외부에서 commission, balance = withdraw_night(balance, 500)을  balance = withdraw_night(balance, 500)로 변경했는데 출력값은 똑같이 나왔습니다. 

def withdraw_night(balancemoney): #저녁에 출금
    # commission = 100 #수수료 100원
    return balance - money - commission

commission = 100 
balance = 0 #잔액
balance = deposit(balance, 1000)
# balance = withdraw(balance, 500)
balance = withdraw_night(balance, 500)
print("수수료는 {0}원이며, 잔액은 {1}원 입니다.".format(commission, balance))

답변 2

·

답변을 작성해보세요.

1

redbean님의 프로필

redbean

2020.11.10

추가로 왜 튜플형식인가 하면, type이란 함수로 확인하면 변수 타입이 튜플로 나오네요 아래 함수를 호출해 보세요

def withdrow_closed(balance , money):
    commission = 100 # 수수료
    return (commission, balance - money -commission)

print(type(withdrow_closed(1000 , 100)))

1

함수의 return 으로 2개 이상의 값을 반환할 때는 , 를 이용한 튜플 형태로 작성하셔야 합니다. 그리고 commission 변수가 함수 안에 선언되는 것의 의미는, 그 commission 함수는 함수를 벗어나면 사용할 수가 없습니다. 이를 지역변수라고 하는데, 함수 밖의 동작과는 아무런 관련 없이 오직 함수 내에서만 그 역할을 충실히 하는 변수입니다. 마치 책상 서랍 1층에는 펜 관련, 2층에는 노트 관련, 3층에는 또 어떤 특정한 것 관련, 이런 식으로 구역이 나누어져 있으면 혹시라도 다른 책상으로 옮길때도 구역별로 쉽게 옮길 수 있겠지요. 프로그램도 이와 유사하답니다. 책상 위에 펜과 노트가 널부러져 있고 2층에 펜이 들어가고 1층에 노트가 들어가고 이러면 굳이 함수로 나누는 것이 의미가 없게 됩니다. withdraw_night 와 같은 함수는, 일반적으로 전달받은 값만 가지고 그 함수의 이름에 맞는 역할을 충실히 이행하고 필요할 때는 1개 이상의 값을 반환해주도록 작성하시는 것이 좋습니다.