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

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. 파이썬 입출력값에 따른 함수의 형태 – 다섯번째

28. 파이썬 입출력값에 따른 함수의 형태 – 두번째 시간

28. 파이썬 입출력값에 따른 함수의 형태 – 두번째 시간

지난 포스팅에 파이썬 입출력값에 따른 함수의 형태에서 일반적인 함수와 입력값이 없는 함수에 대해 공부했었습니다.

이번 포스팅에서는 파이썬 입출력값에 따른 함수의 형태 – 두번째 시간으로 리턴값이 없는 함수와 입력값도 리턴값도 없는 함수, 그리고 매개변수 지정하여 호출하기 에 대해 공부해 보겟습니다.

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

리턴값이 없는 함수

리턴값이 없는 함수 예

Python
>>> def mmm(a, b):
...     print("%d, %d 의 차는 %d 입니다." % (a, b, a-b))
...
>>>

위 처럼 mmm 이라는 함수를 먼저 만들고 함수를 실행시켜 보겠습니다.

Python
>>> mmm(5, 7)
5, 7 의 차는 -2 입니다.

위의 코드 예처럼 리턴값이 없는 함수의 형식은 아래와 같습니다.

함수이름(입력인수 1, 입력인수 2, …)

리턴값이 없는 함수 확인

리턴값이 진짜 있는지 없는지 확인하려면 다음과 같이 해보면 됩니다.

Python
>>> a = mmm(5, 7)
5, 7 의 차는 -2 입니다.

여기서 처음에 헷갈렸던게 ‘5, 7 의 차는 -2 입니다.’ 라는 문장을 출력을 해주었는데 리턴값이 없다는게 이상합니다.
이 부분은 이렇게 보시면 됩니다.
print 문은 함수의 구성요소의 하나인 ‘수행할 문장’에 해당하는 부분이라고 보시면 됩니다.
리턴값은 당연히 없습니다.
리턴값 이라는 건 return 명령으로만 돌려받을 수 있습니다.
이 부분을 확인해 보기 위해 예를 들어보겠습니다.

Python
>>> a = mmm(5, 7)
5, 7 의 차는 -2 입니다.
>>> print(a)
None

위 코드를 보면 a 를 print 로 출력을 해보면 None 이라는 결과가 나옵니다.
None 이라는 건 거짓을 나타내는 자료형이라고 예전에 공부했었죠
mmm 함수 처럼 리턴값이 없을 때 a = mmm(5, 7) 처럼 사용하면 mmm 함수는 리턴값으로 a 변수에 None 을 리턴하게 됩니다.
None 값을 리턴했다는 것은 리턴값이 없다는 의미 입니다.

입력값도 리턴값도 없는 함수

입력값이 없는 함수, 리턴값이 없는 함수에 이어 이번엔 입력값도 리턴값도 없는 함수에 대해 공부해 보겠습니다.

입력값도 리턴값도 없는 함수의 예

Python
>>> def say():
...     print('Hello')
...
>>>

위 코드를 보면 입력 인수를 받는 매개변수도 없고, return 문도 없습니다.
이런 함수를 입력값도 리턴값도 없는 함수라고 보시면 됩니다.
이렇게 입력값도 없고 리턴값도 없는 함수를 사용하는 방법은 한가지 뿐입니다.

Python
>>> say()
Hello

이렇게 입력값도 리턴값도 없는 함수의 형식은 아래와 같습니다

함수이름()

매개변수 지정하여 호출하기

함수를 호출할 때 매개변수를 지정할 수도 있습니다.

Python
>>> def mmm(a, b):
...     return a - b
...

a, b 두 개의 숫자를 입력받아서 먼저 입력된 a 에서 두번째 입력된 b 를 빼서 리턴하는 mmm 이라는 함수 입니다.
이 함수를 매개변수를 지정하여 사용하는 방법입니다.

Python
>>> result = mmm(a=5, b=7) # a 에 숫자 5, b 에 숫자 7 을 대입
>>> print(result)
-2

매개변수 지정하여 호출하기의 장점

Python
>>> result = mmm(b=7, a=5) # b 에 숫자 7, a 에 숫자 5 를 대입
>>> print(result)
-2

위 코드를 보면 이전 코드와 다르게 순서를 바꿨습니다.
이처럼 매개변수를 지정하여 호출하게 되면 순서에 상관없이 사용할 수 있다는 장점이 있습니다.

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