[Python] *args, **kwargs 란?
2022. 3. 19. 12:26ㆍPython/Python 기초 정리
반응형

*args란?
- arguments의 줄임말로 인수를 말합니다.
- 여러 개의 인자를 함수로 받고자 할 때 사용합니다.
- 꼭 args가 아닌 다른 이름으로 받아도 됩니다. 앞에 *를 붙여주면 복수의 인자를 받습니다.
- args는 tuple형태로 전달됩니다.
def print_names(*args):
for name in args:
print(name)
print('>> 한개의 인자')
print_names('가나다')
print('>> 두개의 인자')
print_names('가나다', '라마바')
print('>> 세개의 인자')
print_names('가나다', '라마바', '사아자')
print('>> 타입 출력')
print(type(args))
# 결과
>> 한개의 인자
가나다
>> 두개의 인자
가나다
라마바
>> 세개의 인자
가나다
라마바
사아자
>> 타입 출력
<class 'tuple'>
**kwargs란?
keyword arguments의 줄임말로 키워드 인수를 말합니다.
키워드=특정값 형태로 호출할 수 있습니다
dict형태로 함수 내부로 전달됩니다.
def print_user(**kwargs):
print('>>>user_id', kwargs.get('user_id'))
print('user_name', kwargs.get('user_name'))
print('user_age', kwargs.get('user_age'))
print(type(kwargs))
print_user(user_id='3', user_name='가나다')
print_user(user_id='4', user_name='라마바', user_age=29)
# 결과
>>>user_id 3
user_name 가나다
user_age None
<class 'dict'>
>>>user_id 4
user_name 라마바
user_age 29
<class 'dict'>
이용방식
함수에 인수를 전달하는 방식이기 때문에 일반 변수와 같이 사용이 되는 케이스가 많습니다.
일반 변수, *args, **kwargs 순서로 값을 전달해줍니다.
# 정상
print_user(name, *names, **user_info)
# 에러
print_user(name, *names, *ages, **user_info) # *args는 하나만 존재해야한다
print_user(name, *names, **user_info, **users) # **kwargs는 하나만 존재해야한다
print_user(*name, name, **user_info) # *, **는 일반변수 뒤에 존재해야한다
print_user(name, **user_info, *name) # *, ** 순서로 존재해야한다
반응형
'Python > Python 기초 정리' 카테고리의 다른 글
[Python] 예외처리 try/except, raise (0) | 2022.03.19 |
---|---|
[Python] 문자열 관련 함수 : 문자열 분해, 결합, 변환 관련 함수 (0) | 2022.03.19 |
[Python] 문자열 관련 함수 : 공백 관련 함수 (0) | 2022.03.19 |
[Python] 문자열 관련 함수 : 대소문자 관련 함수 (0) | 2022.03.19 |
[Python] 문자열 관련 함수 : 숫자 포함 관련 함수 (0) | 2022.03.19 |