Python기초강의강좌, 파이썬기초강의강좌, VarArgs 매개변수, return문, DocString
#020 파이썬 기초 - 함수 3편 (Python Function Part 3)

지난 시간에 이어 함수 강의 3편 시작합니다.
VarArgs 매개 변수
가끔 함수에 임의의 개수의 매개 변수를 지정해주고 싶을 때가 있습니다. 이때 VarArgs 매개 변수를 사용합니다. 아래 예제와 같이 별 기호를 사용하여 임의의(Variable) 개수의 인수(Arguments)를 표현합니다.
예제 ( function_varargs.py로 저장하세요) :
# Filename : function_varargs.py
def total(initial=5, *numbers, **keywords):
print(initial)
print(numbers)
print(keywords)
count = initial
for number in numbers:
count += number
for key in keywords:
count += keywords[key]
return(count)
print(total(10, 1, 2, 3, vegetables=50, fruits=100))
▶ 실행결과 :
C:\Anaconda\envs\study_39\python.exe E:\python_study\function_varargs.py
10
(1, 2, 3)
{'vegetables': 50, 'fruits': 100}
166
▶ 동작 원리 :
앞에 별 기호가 달린 매개 변수, 예를 들어 *param과 같이 매개 변수를 지정해 주면 함수에 넘겨진 모든 위치 기반 인수들이 'param'이라는 이름의 튜플로 묶여서 넘어옵니다.
또 이와 비슷하게 앞에 별 두 개가 달린 매개 변수, 예를 들어 **param과 같이 매개 변수를 지정해 주면 함수에 넘겨진 모든 키워드 인수들이 'param'이라는 이름의 사전으로 묶여서 넘어옵니다.
위 예제에서 편의를 위해 넘어온 값들을 출력해 보았습니다.
10은 initial에 매핑
1, 2, 3은 numbers 튜플에 매핑
vegetables=50, fruits=100은 keywords 사전에 매핑
total 함수를 호출 후 최종 return 값 166이 출력됩니다.
튜플과 사전에 대해서는 다음 기회에 좀 더 자세히 다뤄보도록 하겠습니다.
return 문
return 문은 함수로부터 되돌아(return) 나올 때, 즉 함수를 빠져나올 때 사용됩니다. 이때 return 값처럼 값을 지정해 주면, 함수가 종료될 때 그 값을 반환하도록 할 수 있습니다.
예제 ( function_return.py로 저장하세요):
# Filename : function_return.py
def maximum(x, y):
if x > y:
return(x)
elif x == y:
return('The numbers are equal')
else:
return(y)
print(maximum(2, 3))
▶ 실행결과 :
C:\Anaconda\envs\study_39\python.exe E:\python_study\function_return.py
3
▶ 동작 원리 :
여기에서 사용된 maximum 함수는 매개 변수들 중 최대 값을 반환합니다. 위 경우에는 함수에 넘겨진 숫자들 중 최댓값을 반환합니다. 간단한 if.. else 구문을 통해 더 큰 값을 찾고, 최종 값을 반환(return) 합니다.
return 문 뒤에 아무 값도 지정하지 않은 경우, return None을 실행하는 것과 같습니다. None 이란 파이썬에서 사용되는 특별한 형식으로 아무것도 없음을 의미합니다. 예를 들면, 어떤 변수의 값이 None이라는 것은 변수에 할당된 값이 없다는 것을 의미합니다.
여러분이 return 문을 함수에 지정하지 않으면, 함수는 끝날 때 자동으로 return None 구문을 암시적으로 호출합니다. 아래 예제에서 return 문이 지정되지 않은 some_function이라는 함수를 선언하고 print some_function()을 실행하여 그 결과를 확인해 보시기 바랍니다.
def some_function():
pass
pass 문은 아무 기능이 없는 구문입니다. 이것은 빈 블록을 지정해 줄 때 사용됩니다.
▶ 참고 :
예제로 보았던 최댓값을 찾는 함수는 이미 파이썬에 내장 함수 max가 이미 포함되어 있습니다. 따라서 가능하면 이 내장 함수를 사용하시기 바랍니다.
DocString
파이썬은 설명(Documentation) 문자열(String)이라고 불리는, 짧게 줄여서 DocStrings라 불리는 편리한 기능을 가지고 있습니다. DocString은 여러분이 만든 프로그램을 알아보기 쉽게 해 주고, 또 후에 프로그램에 대한 설명서를 작성할 때 유용하게 사용될 수 있는 중요한 도구입니다.
아래 예제와 같이, DocString은 프로그램이 실행중일 때도 읽어올 수 있습니다.
예제 ( function_docstring.py로 저장하세요):
# Filename : function_docstring.py
def print_max(x, y):
'''Prints the maximum of two numbers.
The two values must be integers.'''
# convert to integers, if possible
x = int(x)
y = int(y)
if x > y:
print(x, 'is maximum')
else:
print(y, 'is maximum')
print_max(3, 5)
print(print_max.__doc__)
▶ 실행결과 :
C:\Anaconda\envs\study_39\python.exe E:\python_study\function_docstring.py
5 is maximum
Prints the maximum of two numbers.
The two values must be integers.
▶ 동작 원리 :
함수에 포함된 첫 논리적 명령행에 적어둔 문자열은 "함수의 DocString"이라고 불리는 것입니다. 여기에서 설명하는 DocString은 모듈과 클래스에도 똑같이 적용됩니다. 각각에 대해서는 각 챕터에서 좀 더 자세히 알아보도록 하겠습니다.
DocString은 일반적으로 첫째줄의 첫 문자는 대문자로, 마지막 문자는 마침표로 끝나도록 작성합니다. 그리고 두 번째 줄은 비워 두고, 세 번째 줄부터는 이것이 어떤 기능을 하는지에 대해 상세하게 작성합니다. 저는 앞으로 여러분이 함수의 DocString를 작성할 때 이 규칙을 따르기를 강력히 권합니다.
print_max 함수의 DocString은 함수의 doc 속성을 통해 접근할 수 있습니다 (밑줄이 두 개 임을 다시 한번 확인하세요). doc 은 함수 객체가 갖고 있는 기본 속성입니다. 파이썬에서는 함수를 포함한 모든 것이 객체로 다루어진다는 점을 기억하세요. 이에 대해서는 클래스 챕터에서 좀 더 자세히 알아볼 것입니다.
파이썬에서 help()를 이용해 보셨다면, 여러분은 이미 DocString을 본 적이 있는 것입니다. help()가 하는 일은 주어진 대상의 doc 속성을 가져와 화면에 보여주는 것뿐입니다. 따라서 위에서 만든 함수에 대해서도 마찬가지로 동작합니다. 여러분의 프로그램에 help(print_max)라고 한 줄 추가해 보시기 바랍니다. help 창을 닫으려면 q 키를 누르세요.
이를 이용하여 여러분의 프로그램에 대한 명세서를 자동으로 만들어주는 프로그램들이 있습니다. 따라서, 저는 여러분이 어떤 함수를 작성하시던지 DocString을 작성할 것을 강력히 권합니다. 파이썬과 함께 설치되는 pydoc 또한 help()와 비슷한 방법으로 DocString을 이용하여 동작합니다.
▶요약
지금까지 함수에 대해 많은 것들을 알아보았습니다만, 사실 아직 모든 기능을 다 알아본 것은 아닙니다. 그러나, 실제적으로 사용되는 기능에 대해서는 거의 모든 것을 설명해 드렸기 때문에 아마 앞으로 매일매일 프로그램을 작성할 때는 별 무리가 없을 것입니다.
다음 시간부터 모듈을 작성하고 사용하는 방법에 대해 알아보도록 하겠습니다
감사합니다.
Do it! SQL을 찾아 주셔서 감사합니다. ♥ 댓글이 큰 힘이 됩니다. |
'IT > 파이썬 기초 (Python)' 카테고리의 다른 글
#022 파이썬 기초 - 모듈 2편 (Python Module Part 2) (58) | 2023.03.04 |
---|---|
#021 파이썬 기초 - 모듈 1편 (Python Module Part 1) (125) | 2023.03.03 |
#019 파이썬 기초 - 함수 2편 (Python Function Part 2) (73) | 2023.03.01 |
#018 파이썬 기초 - 함수 1편 (Python Function Part 1) (64) | 2023.02.28 |
#017 파이썬 기초 - 흐름 제어문 for, break, continue (102) | 2023.02.27 |
댓글