차밍이

[파이썬] 함수에 입력 변수 여러개 받기 - 매개변수 본문

파이썬/기본 문법 정리

[파이썬] 함수에 입력 변수 여러개 받기 - 매개변수

2021. 5. 28. 08:58
반응형

파이썬에서 함수를 사용할 때 입력 값을 받아서 사용하는 경우가 많습니다.

함수에서 입력 값을 받을 때, 상황에 따라서 입력받는 값의 개수가 달라질 수 있는 경우가 생길 수 있습니다.

예를 들면 내장 함수인 sum과 같은 경우가 있습니다.

list 내부의 값들의 sum을 진행할 때, list의 길이에 영향을 받지 않고 모두 합해집니다.

이처럼 다양한 값을 받아서 함수를 사용하기 위한 "매개변수"에 대해서 알아보겠습니다.

 

1. 위치매개변수

  • 가장 흔하게 사용되는 매개변수 전달 방식
  • 매개변수의 위치에 맞게 값이 전달되는 방식

example

def change_location(num1, num2):
    return num2, num1

change_location(5,10)
>>> (10, 5)

add_value(5, 10) 에서 첫 번째 입력값인 5num1의 값으로, 두 번째 입력 값 10num2의 값으로 입력됩니다.

그러므로 return할 때 순서를 바꿔주었으니 순서가 뒤집어져서 출력된 것을 확인할 수 있습니다.

 

2. 기본 매개변수

  • =(할당 연산자)를 사용해서 매개변수에 기본값을 전달하는 방식
  • 값이 제공되지 않으면 기본값을, 제공될 경우 제공된 값을 사용
  • 기본값이 없는 매개변수를 먼저 입력받도록 사용해야 함
def check_value(num1, num2=10):
    return num1, num2

check_value(3), check_value(3, 8)
>>> ((3, 10), (3, 8))

여기서 num2=10의 경우를 기본매개변수라고 합니다. 기본값 10을 지정해주었습니다.

check_value(3)의 경우는 num2에 대한 값이 없으므로 기본값 10을 사용합니다.

check_value(3, 8)의 경우는 num2의 값이 입력되었으니 주어진 값 8을 사용합니다.

 

3. 키워드 매개변수

  • 함수를 호출할 시 매개변수의 이름을 명시하여 값을 전달하는 방식
  • 순서에 상관없이 매개변수의 이름에 전달하면 됨
def printInfo(name, age):
    print(f"NAME : {name}, AGE : {age}")

printInfo(age=26, name='CHAN')

>>>  NAME : CHAN, AGE : 26

순서에 상관없이 nameage에 지정해서 전달한 값을 받게 됩니다.

 

4. 가변 매개변수

  • 매개변수 앞에 *을 붙이면 튜플 형태로 값이 전달
  • 전달받을 수 있는 값의 수가 정해지지 않고 가변적으로 모두 받을 수 있음
def add_para(*args):
    print(args)
    return sum(args)

add_para(3,4,5,6), add_para(1,2,3,4,5,6,7,8,9,10)

add_para라는 함수에 가변 매개 변수 *args를 받음으로써 여러 개의 값을 받을 수 있도록 하였습니다.

입력된 args를 출력하면 튜플 형태인 것을 확인할 수 있습니다.

필요한 개수만큼 입력받아서 사용할 수 있으니, 활용도가 높으니 숙지하면 좋습니다.

 

5. 가변 키워드 매개변수

  • 매개변수 앞에 **을 붙이면 딕셔너리 형태로 값을 전달하는 방식
  • key - value 형태로 입력되므로 매개변수를 전달하고 받을 때 용이함
  • 함수의 다양한 옵션을 컨트롤할 때 유용하게 사용됨
def show_para(**args):
    print(args)

show_para(a=1, b=2, c=3)

dic = {'name':'chan','job':'back su', 'hobby':'coding'}
show_para(**dic)
>>>
{'a': 1, 'b': 2, 'c': 3}
{'name': 'chan', 'job': 'back su', 'hobby': 'coding'}

**dic를 통해서 함수에 dictionary형태로 값을 넘겨주는 부분은 나중에 머신러닝에서 세부 옵션들을 각각 줄 때, 유용하게 사용됩니다.

반응형

관련된 글 보기

Comments