
()안에 넣는 자료코드의 집합
기본형태
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