31. 파이썬 입출력값에 따른 함수의 형태 – 다섯번째

  • 네이버 블로그 공유하기
  • 카카오톡 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기

파이썬 입출력값에 따른 함수의 형태에 대해 계속 공부해 나가겠습니다.

파이썬 입출력값에 따른 함수의 형태

지난 포스팅에 함수는 return 문을 만나면 리턴값을 돌려주고 함수를 빠져나간다고 했습니다
이번 포스팅에서는 return 문의 또 다른 쓰임새부터 매개변수에 초깃값 미리 설정하는 방법까지 공부해 보겠습니다

return 문의 또 다른 쓰임새

상황에 따라 함수를 빠져나가고 싶다면 return 을 단독으로 사용해 함수에서 바로 빠져나갈 수 있습니다.

Python
>>> def say_nicknm(nicknm):
...     if nicknm == "바보":
...         return
...     print("당신의 별명은 %s 입니다." % nicknm)
...
>>>

위에 예로 든 코드는 ‘별명’을 입력 받아서 출력 하는 함수 입니다. 여기서 생성한 say_nicknm 함수 역시 리턴값은 없습니다(전에 진행했던 포스팅에서 문자열을 출력한다는 것과 리턴값이 있다는 것은 다른 의미인 걸 공부했었습니다.
28. 파이썬 입출력값에 따른 함수의 형태 – 두번째 시간
헷갈리지 말아야 할게 함수의 리턴값은 무조건 return 문에 의해서만 생긴다는 것을 명심해야 합니다.

위 코드에서는 “바보”라는 문자열이 들어오면 문자열을 출력하지 않고 함수를 바로 빠져나가게 됩니다.

Python
>>> say_nicknm('천재')
당신의 별명은 천재 입니다.
>>> say_nicknm('바보')
>>>

위 코드 실행결과 처럼 nicknm 에 ‘바보’라는 문자열이 들어오는 순간 바로 종료하게 됩니다.
이렇게 return 을 이용해 함수를 빠져나가는 구현방식은 실제 프로그래밍을 할때 자주 사용됩니다.

매개변수에 초기값 설정해 놓기

이번에는 좀 다른 형태의 함수 인수 전달 하는 방법입니다.
매개변수에 초기값을 미리 설정해 놓는 경우입니다.

Python
>>> def say_myinfo(name, age, man=True):
...     print("저의 이름은 %s 입니다." % name)
...     print("저의 나이는 %d 살 입니다." % age)
...     if man:
...         print("저는 남자입니다.")
...     else:
...         print("저는 여자입니다.")
...

위 코드를 보면 say_myinfo 함수의 매개변수가 name, age, man=True 으로 3개가 설정이 됩니다. 그런데 man=True 처럼 매개변수에 미리 값을 넣어줬습니다.
이 방법이 매개변수에 초기값을 미리 설정하는 방법입니다.
위 코드를 해석하면 say_myinfo 함수가 3개의 매개변수를 받아서 마지막 인수인 man 이 True 인 경우에는 “저는 남자입니다.” False 이면 “저는 여자입니다.” 를 출력하게 되어 있습니다.
실제로 say_myinfo 를 사용해 보겠습니다.

Python
>>> say_myinfo('파이썬', 15)
저의 이름은 파이썬 입니다.
저의 나이는 15 살 입니다.
저는 남자입니다.

위 실행 결과처럼 매개변수에 2개를 주면 name 에는 ‘파이썬’, age 에는 15 숫자가 대입됩니다. 그리고 man 이라는 변수에는 아무 입력이 없었기에 초기값 True 를 가지게 되는 것입니다.

Python
>>> say_myinfo('파이썬', 15, False)
저의 이름은 파이썬 입니다.
저의 나이는 15 살 입니다.
저는 여자입니다.

똑같이 진행 해 보되 man 매개변수 값에 False 값을 대입해 봤습니다. man = False 가 되기에 else 문을 만나 ‘나는 여자입니다’ 문장이 출력 되는 걸 확인 할 수 있습니다.

매개변수에 초기값 설정할 때 주의할 점

Python
>>> def say_myinfo(name, man=True, age):
  File "<stdin>", line 1
    def say_myinfo(name, man=True, age):
                                   ^^^
SyntaxError: non-default argument follows default argument

위 코드 처럼 age 와 man 의 매개변수 위치를 바꿔보았습니다.
함수의 다음 부분은 입력도 못하고 오류가 발생했습니다.
위처럼 코드를 작성하게 되면 name 다음에 나이를 입력 하려고 할 때 파이썬 인터프리터가 어디에 대입해야 할지 판단하기가 어려워 오류를 발생시키게 되는 것입니다.

오류메세지 내용 ‘SyntaxError: non-default argument follows default argument’ 은 초기값 없는 매개변수(age)는 초기값이 있는 매개변수(man) 뒤에 사용할 수 없다는 의미입니다.
결론적으로 (name, age, man=True)는 허용되지만 (name, man=True, age) 는 허용이 안된다는 것입니다.
초기값을 설정하고 싶은 매개변수는 항상 뒤쪽에 위치해야 하는 걸 명심해야 겠습니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
31. 파이썬 입출력값에 따른 함수의 형태 – 다섯번째

Leave a Comment