티스토리 뷰

경주에는 아주 유명한 순두부찌개 식당이 있습니다. 사람들이 번호표를 받고 줄을 서서 먹는 곳인데, 차례가 되어서 자리를 배정받고 "2개요" 라고만 주문 하면 순두부찌개 2개가 나옵니다. "순두부찌개 2개요" 도 아니고 그냥 "2개요" 라고 했는데 순두부찌개가 나온 것이죠. 그렇다고 그 식당에 순두부찌개만 있는 것이냐, 그건 또 아닙니다. 하지만 손님들 대부분 가장 유명한 메뉴인 순두부찌개를 주문하다보니, 따로 메뉴 이름을 얘기하지 않으면 주문 받는 입장에서는 당연히 "순두부찌개" 겠거니 하는 것이죠.

 

함수에도 이런 비슷한 것이 있습니다. 굳이 무엇이다 라고 말하지 않아도 당연히 그것이겠거니 하는 내용인데, 이번에는 은행이 아닌 다른 예제를 들어볼까요? 어떤 사람에 대한 기본 프로필 정보를 간략하게 출력하는 함수입니다.

def profile(name, age, main_lang):
    print("이름 : {0}\t나이 : {1}\t주 사용 언어 : {2}".format(name, age, main_lang))
    
profile("유재석", 20, "파이썬") # 유재석씨(20세)의 주 사용 언어는 파이썬
profile("김태호", 25, "자바") # 김태호씨(25세)의 주 사용 언어는 자바

profile() 함수에 순서대로 이름, 나이, 그리고 가장 잘 하는 프로래밍 언어 정보를 전달값으로 넘기면 함수 안에서는 전달받은 값들을 정해진 형태로 출력합니다. 전달값들은 탈출문자를 통해 탭으로 구분하여 공간을 넓게 사용하도록 했습니다.

 

실행 결과는 이렇게 나오네요.

이름 : 유재석   나이 : 20       주 사용 언어 : 파이썬
이름 : 김태호   나이 : 25       주 사용 언어 : 자바

유재석씨와 김태호씨는 서로 나이도 다르고 주 사용 언어도 다릅니다.

 

그런데 만약에 두 분의 나이가 같고 현재 같은 고등학교를 다니고 있으며 같은 컴퓨터 수업을 듣고 있다면 어떨까요? 모두 17세이며 프로그래밍 언어는 함께 수업을 듣는 파이썬 하나만 다룰 줄 안다면요? 그러면 전달값 3개 중에서 나이와 주 사용 언어는 생략할 수 있지 않을까요?

 

위 코드를 모두 지우고 profile() 함수를 다시 정의해보겠습니다. 이번에는 전달값 부분이 어떻게 바뀌는지 잘 봐주세요.

def profile(name, age=17, main_lang="파이썬"): # 전달값을 따로 받지 않을때 기본으로 사용할 값
    print("이름 : {0}\t나이 : {1}\t주 사용 언어 : {2}".format(name, age, main_lang))
        
profile("유재석")
profile("김태호")

실행 결과를 먼저 볼까요?

이름 : 유재석   나이 : 17       주 사용 언어 : 파이썬
이름 : 김태호   나이 : 17       주 사용 언어 : 파이썬

이번에는 profile() 함수를 호출할 때 이름 정보만 넘겼는데 나이와 주 사용 언어 정보가 17세, 파이썬으로 출력이 되었습니다. 바로 함수 전달값 부분에 적힌 age=17, main_lang="파이썬" 이 부분 때문인데요. 함수를 호출할 때 기본으로 사용할 값을 이런 식으로 정의해줄 수가 있습니다. 그러면 모든 전달값에 대해서 일일이 적지 않아도 되는 이점이 있죠.

 

물론 기본값이 있다고 해도 다음과 같이 필요한 전달값을 포함하면 처음에 profile() 함수를 정의한 방법과 동일하게 사용할 수 있답니다.

profile("유재석") # age, main_lang 을 기본값으로 사용
profile("유재석", 20) # main_lang 을 기본값으로 사용
profile("유재석", 20, "파이썬") # 기본값 사용하지 않음

 

 

잠깐!

Q) 띄어쓰기는 꼭 해야 하나요? 어떤 경우에는 쓰고 어떤 경우에는 안쓰는데 특별한 이유가 있나요?

A) 코딩을 할 때 아주 중요한 것 중 하나가 바로 가독성 이라는 겁니다. 말 그대로 읽기 쉽도록 코드를 작성하는 것인데요, 스페이스 등을 불규칙적으로 뒤죽박죽 섞어 쓰면 코드를 볼 때 굉장히 피로해집니다. 그래서 일종의 약속으로 정한 것이 있는데, 다른 사람과 함께 작업하기 위해, 또는 미래의 자신이 코드를 알아보기 쉽게 하도록 위해 줄을 딱딱, 스페이스도 딱딱 알맞게 넣어주곤 한답니다. print() 함수 내에서 여러 변수들을 + 로 묶어서 출력하거나, 이번 장에서 배운 profile() 함수를 호출할 때 콤마(,)로 구분된 전달값들 사이를 띄우거나 붙이거나 동작은 동일하지만 가급적 예제 코드에서 알려드리는대로 습관을 들이시는 것을 권해 드립니다. 파이썬 기본서이기 때문에 자세한 내용을 다루지는 않겠지만, 개인적으로 더 공부하시고 싶으신 분은 구글에서 PEP 8 이라고 검색을 해보시면 관련 자료를 찾으실 수 있습니다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함