728x90
반응형
*args 는 *argugments의 줄임말입니다.
반드시 *args라고 적을 필요는 없습니다. *Names, *Things 아무렇게나 적어도 됩니다.
이 지시어는 복수개의 인자를 함수로 받고자 할 때 쓰입니다.
예시)
사람의 나이와 이름을 받아서 나이와 이름을 분리한 후 출력하려 합니다.
하지만 여기서 사용자가 몇 개의 변수를 적어 넣을 지 알 수 없는 것입니다.
즉, 이 지시어는 여러개의 매개변수를 함수로 받고 싶을 때 사용하는 지시어 입니다.
이럴 때, *args를 인자로 받게 됩니다.
*args에서 기억해야 하는 건 두가지 입니다.
1. 결과값의 형태
2. 순서
def age_Name(*Names):
for name in Names:
print("%s,%s"%(name[:2],name[2:]))
print("\n")
age_Name('25James','28Kim','30Amy')
25,James
28,Kim
30,Amy
<class 'tuple'> ('25James', '28Kim', '30Amy')
출력 결과 튜플 형태임을 알 수 있습니다.
여러 개의 인자로 함수를 호출할 경우, 함수 내부에서는 튜플로 받은 것처럼 인식합니다.
*args 같은 경우 일반 변수 보다 항상 뒤에 와야 한다는 점을 기억해야 합니다.
파이썬은 어디서부터 어디까지를 *변수에 담을 지 알 수가 없습니다.
그래서 맨 앞에 특정 변수를 명시해두고, 그 뒤에는 *args로 아규먼트를 넣어줘야 합니다.
이제 **kwargs에 대해 알아봅시다!
kwargs는 keyword argument의 줄임말로 키워드를 제공합니다.
**kwargs는 (키워드 = 특정 값) 형태로 함수를 호출 할 수 있습니다.
딕셔너리 형태로 전달이 되며 {'키워드':'특정값'} 이러한 형태로 함수 내부로 전달이 됩니다.
예시)
def name(**Names):
print(Names)
name(name1='James',name2='Amy',name3='Jane')
{'name1': 'James', 'name2': 'Amy', 'name3': 'Jane'}
*args 와 마찬가지로 순서가 중요한데, *args와 **kwargs를 함께 사용하는 경우에는 *args ,**kwargs 순서로 써주어야 합니다.
예시)
def name(names, *args, **kwargs):
728x90
반응형
'Language > Python' 카테고리의 다른 글
[Python] functools 의 partial | LIM (0) | 2022.07.09 |
---|---|
[Python] Flask와 FastAPI로 Python 동시성 테스트 | LIM (0) | 2022.07.03 |
[Python] 예외처리 try, except, finally and raise | LIM (0) | 2022.06.24 |
[Python] 추상 메서드 ABC의 정의와 사용 | LIM (0) | 2022.06.19 |
[Python] Thread & Lock ( 쓰레드와 락 ) | LIM (0) | 2022.06.15 |
댓글