용어

  • 호출: 함수를 사용한다
  • 매개변수: 함수를 호출할 때 괄호()안에 넣는 자료
  • 리턴값: 호출한 함수의 최종 결과

함수?

코드의 집합
기본형태

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
  • (일반) 매개변수 작성 및 입력 조건
    • 이 함수를 호출할 때 int1과 int2를 반드시 입력해야 한다
    • 이 함수를 호출할 때 괄호 안의 순서대로 int1에 해당하는 data를 먼저 입력하고 그 뒤에 ,로 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으로 직접 지정하며 호출했다. 바로 이러한 경우 '키워드를 사용하여 매개변수를 지정했다'고 할 수 있으며, 이를 키워드 매개변수라고 한다.

용어 자체가 그렇게 중요치는 않은 듯하다. 어려운 말이 아니라 일반 매개변수 또는 기본 매개변수의 값을 직접 바꿔서 입력할 수 있다는 것으로 이해하면 간단하다.


매개변수 정리

  • 일반 매개변수

    • 가장 앞에 선언한다
    • 필수로 입력해야 한다
    • 순서에 맞게 입력해야 한다
    • 직접 값을 지정하여 키워드 매개변수로 사용할 수 있다

  • 가변 매개변수

    • 일반 매개변수 뒤에 선언한다

  • 기본 매개변수

    • 일반 매개변수 뒤에 선언한다
    • '일반 매개변수 이름' = '값'의 구조를 가진다
    • 직접 값을 지정하여 키워드 매개변수로 사용할 수 있다

Return

  1. 해당 함수를 종료한다
  2. 해당 함수를 호출한 지점으로 돌아간다
  3. 값을 넘겨주기도 한다

def return_test()
	return 100

a = return_test()
print(a)
>> 100
def return_test()
	return

a = return_test()
print(a)
>> None
  
profile
can do this all day

0개의 댓글