차밍이
[파이썬] 함수에 입력 변수 여러개 받기 - 매개변수 본문
파이썬에서 함수를 사용할 때 입력 값을 받아서 사용하는 경우가 많습니다.
함수에서 입력 값을 받을 때, 상황에 따라서 입력받는 값의 개수가 달라질 수 있는 경우가 생길 수 있습니다.
예를 들면 내장 함수인 sum
과 같은 경우가 있습니다.
list
내부의 값들의 sum
을 진행할 때, list
의 길이에 영향을 받지 않고 모두 합해집니다.
이처럼 다양한 값을 받아서 함수를 사용하기 위한 "매개변수"에 대해서 알아보겠습니다.
1. 위치매개변수
- 가장 흔하게 사용되는 매개변수 전달 방식
- 매개변수의 위치에 맞게 값이 전달되는 방식
example
def change_location(num1, num2):
return num2, num1
change_location(5,10)
>>> (10, 5)
add_value(5, 10)
에서 첫 번째 입력값인 5
가 num1
의 값으로, 두 번째 입력 값 10
이 num2
의 값으로 입력됩니다.
그러므로 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
순서에 상관없이 name
과 age
에 지정해서 전달한 값을 받게 됩니다.
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형태로 값을 넘겨주는 부분은 나중에 머신러닝에서 세부 옵션들을 각각 줄 때, 유용하게 사용됩니다.
'파이썬 > 기본 문법 정리' 카테고리의 다른 글
[Python] 파일명 바꾸기, 여러 파일 한번에 변경 - os.rename (1) | 2022.02.24 |
---|---|
[Python] 파일 확장자 구하기, 확장자로 나누기 - os.path.splitext (1) | 2022.02.23 |
[Pandas] 판다스 기초 #2 - 데이터 구간별 범주화 pd.cut (0) | 2021.05.30 |
[Pandas] 판다스 기초 #1 자료구조와 Attribute - index, columns, rename (0) | 2021.05.29 |
[NumPy] 넘파이 기초 공부하기 #2 np.vstack, hstack, fromfunction (0) | 2021.05.27 |
[파이썬] zip 내장함수 - 묶어서 데이터 가져오기 (0) | 2021.05.26 |
[파이썬] 리스트 인덱스와 값 같이 가져오기 : 내장함수 - enumerate (0) | 2021.05.26 |
객체 지향 프로그래밍 : 객체와 메서드를 통해 알아보자 (0) | 2020.01.29 |