()
안에 넣는 자료코드의 집합
기본형태
def 함수이름(매개변수...):
문장
# 괄호 안의 value와 n이
def print_n_times(value, n):
# 함수 내부에서 식별자 역할을 하고 있다
# 함수를 호출할 때 외부에서 넣은 값을 함수 내부에 대입하고 연산한다
for i in range(n):
print(value)
print_n_times("hello", 5)
>>
'hello'
'hello'
'hello'
'hello'
'hello'
앞서 서술되어 있는 구조와 같이, 위치와 개수가 정해져 있는 전형적인 형태의 매개변수를 말한다.
# 여기서 int1과 int2가 일반 매개변수이다
def summary(int1, int2):
sum = int1 + int2
return sum
,
로 int2를 구분하여 순서대로 적는다TypeError
가 발생한다❗️ 여기서 '가변'의 의미는 매개변수의 개수가 변할 수 있다는 것을 뜻한다.
❗️ 가변 매개변수의 자료형은 튜플이며 리스트처럼 활용할 수 있다.(iterable)
❕ 애스터리스크 '*
'기호를 매개변수 이름 앞에 붙이면 가변으로 선언하겠다는 의미이다.
'*'
를 가진 매개변수는 하나만 설정할 수 있다# 가변 매개변수의 이름 앞에는 애스터리스크 '*' 기호를 붙여준다
def summary(*values):
sum = 0
for i in values:
sum += i
return sum
# 1, 2, 3, 4, 5 각 요소는 *values라는 하나의 가변 매개변수로 취급된다
summary(1, 2, 3, 4, 5)
>> 15
위 코드에서 summary()
함수를 호출할 때 들어간 5개의 매개변수가, 호출된 함수에서는 *values
라는 하나의 변수안에 전달 된다.
가변 매개변수는 iterable 자료이며, 따라서 반복문을 통해 내부 로직을 실행하기 편리하다.
가변 매개변수를 일반 매개변수 앞에 적으면,
위치와 개수가 고정되어야 하는 일반 매개변수가 어떤 것인지 알 수 없다.
따라서 가변 매개변수는 반드시 일반 매개변수의 뒤쪽에 위치한다.
기본 매개변수는 간단히 말해, 일반 매개변수의 초깃값을 정해놓은 상태를 말한다.
print( )
함수로 예를 들어 보면
print(*value, sep=' ', end='\n', file=sys.stdout, flush=False)
가장 앞에 있는 *value
가 가변 매개변수이다.
print( )
함수를 사용할 때 출력하고 싶은 내용을 ,
를 기준으로 하여 몇 개든 입력할 수 있는 것을 생각하면 쉽게 이해할 수 있다.
뒤로는 sep=' '
과 같이 '일반 매개변수' = '값'
의 구조로 서술된 매개변수들이 보인다. 일반 매개변수에 기본값을 미리 할당 해놓은 것이다. 얘들을 기본 매개변수라고 한다.
함수 호출 시 따로 적지 않더라도, 미리 가지고 있던 기본값으로 함수를 호출한다.
# 매개변수 'n=2'라고 일반 매개변수에 미리 값이 할당된 것을 볼 수 있다
# 이런 형태를 기본 매개변수라고 한다
def print_n_times(value, n=2)
for i in range(n):
print(value)
매개변수의 이름과 값을 직접 입력하면 그것이 키워드 매개변수이다.
def print_n_times(value, n=2)
위의 함수 선언부에서 n=2
는 기본 매개변수라 부르는 것을 알고 있다.
여기서 n
의 값을 원하는 대로 입력할 수도 있다.
위 함수를 호출할 때
print_n_imtes("hello", n=3)
n
의 값을 3
으로 직접 지정하며 호출했다. 바로 이러한 경우 '키워드를 사용하여 매개변수를 지정했다'고 할 수 있으며, 이를 키워드 매개변수라고 한다.
용어 자체가 그렇게 중요치는 않은 듯하다. 어려운 말이 아니라 일반 매개변수 또는 기본 매개변수의 값을 직접 바꿔서 입력할 수 있다는 것으로 이해하면 간단하다.
일반 매개변수
가변 매개변수
기본 매개변수
'일반 매개변수 이름' = '값'
의 구조를 가진다def return_test()
return 100
a = return_test()
print(a)
>> 100
def return_test()
return
a = return_test()
print(a)
>> None