파이썬 입출력값에 따른 함수의 형태에 대해 계속 공부해 나가겠습니다.
- 30. 파이썬 입출력값에 따른 함수의 형태 – 네번째
- 29. 파이썬 입출력값에 따른 함수의 형태 – 세번째 시간
- 28. 파이썬 입출력값에 따른 함수의 형태 – 두번째 시간
- 27. 파이썬 입출력값에 따른 함수의 형태 – 첫번째
파이썬 입출력값에 따른 함수의 형태
지난 포스팅에 함수는 return 문을 만나면 리턴값을 돌려주고 함수를 빠져나간다고 했습니다
이번 포스팅에서는 return 문의 또 다른 쓰임새부터 매개변수에 초깃값 미리 설정하는 방법까지 공부해 보겠습니다
return 문의 또 다른 쓰임새
상황에 따라 함수를 빠져나가고 싶다면 return 을 단독으로 사용해 함수에서 바로 빠져나갈 수 있습니다.
>>> def say_nicknm(nicknm):
... if nicknm == "바보":
... return
... print("당신의 별명은 %s 입니다." % nicknm)
...
>>>
위에 예로 든 코드는 ‘별명’을 입력 받아서 출력 하는 함수 입니다. 여기서 생성한 say_nicknm 함수 역시 리턴값은 없습니다(전에 진행했던 포스팅에서 문자열을 출력한다는 것과 리턴값이 있다는 것은 다른 의미인 걸 공부했었습니다.
28. 파이썬 입출력값에 따른 함수의 형태 – 두번째 시간
헷갈리지 말아야 할게 함수의 리턴값은 무조건 return 문에 의해서만 생긴다는 것을 명심해야 합니다.
위 코드에서는 “바보”라는 문자열이 들어오면 문자열을 출력하지 않고 함수를 바로 빠져나가게 됩니다.
>>> say_nicknm('천재')
당신의 별명은 천재 입니다.
>>> say_nicknm('바보')
>>>
위 코드 실행결과 처럼 nicknm 에 ‘바보’라는 문자열이 들어오는 순간 바로 종료하게 됩니다.
이렇게 return 을 이용해 함수를 빠져나가는 구현방식은 실제 프로그래밍을 할때 자주 사용됩니다.
매개변수에 초기값 설정해 놓기
이번에는 좀 다른 형태의 함수 인수 전달 하는 방법입니다.
매개변수에 초기값을 미리 설정해 놓는 경우입니다.
>>> 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 를 사용해 보겠습니다.
>>> say_myinfo('파이썬', 15)
저의 이름은 파이썬 입니다.
저의 나이는 15 살 입니다.
저는 남자입니다.
위 실행 결과처럼 매개변수에 2개를 주면 name 에는 ‘파이썬’, age 에는 15 숫자가 대입됩니다. 그리고 man 이라는 변수에는 아무 입력이 없었기에 초기값 True 를 가지게 되는 것입니다.
>>> say_myinfo('파이썬', 15, False)
저의 이름은 파이썬 입니다.
저의 나이는 15 살 입니다.
저는 여자입니다.
똑같이 진행 해 보되 man 매개변수 값에 False 값을 대입해 봤습니다. man = False 가 되기에 else 문을 만나 ‘나는 여자입니다’ 문장이 출력 되는 걸 확인 할 수 있습니다.
매개변수에 초기값 설정할 때 주의할 점
>>> 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) 는 허용이 안된다는 것입니다.
초기값을 설정하고 싶은 매개변수는 항상 뒤쪽에 위치해야 하는 걸 명심해야 겠습니다.
- 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
