반응형
def test(*args, **kwargs):
print(args)
print(kwargs)
test(1,2,3, temp=23, ttemp=45)
(1, 2, 3)
{'temp': 23, 'ttemp': 45}
어떤 함수의 인자(parameters)를 특정지을 수 없을 때 *를 포함한 변수명으로 받을 수 있다.
위 예에서 함수 test
는 *args
, **kwargs
의 변수명으로 인자를 받는다.
args는 arguments의 약자로, kwargs는 keyward arguments의 약자로 사용되었으나, 이름은 파이썬 문법이 허용하는 어떤 이름이든 상관없다. 중요한 것은 별표하나 와 별표두개이다.
별표하나의 변수명 즉 *args
로 전달되는 인자는 모든 위치형 인자(positional parameter)가 되고, **kwargs
로 전달되는 인자는 모든 키워드형 인자가 된다.
위 예에서 함수test
를 호출할 때 위치형 인자로 1,2,3을 전달하고, 키워드형 인자로 temp=23, ttemp=45를 전달한다. 전달받은 함수 내부에서 보면
변수 args
는 튜플이고, 변수 kwargs
는 딕셔너리임을 확인할 수 있다.
아래와 같이 인수들을 미리 변수로 정의해 놓고 *와 **를 붙인 변수로 인수들을 전달할 수도 있다.
para1 = (1,2,3)
para2 = {'temp': 23, 'ttemp': 45}
test(*para1, **para2)
(1, 2, 3)
{'temp': 23, 'ttemp': 45}
반응형
'대동단결 Python' 카테고리의 다른 글
pygame에서 한글입력 컴포넌트 만들기 (2) | 2022.09.08 |
---|---|
Thread간 정보 공유를 위한 Queue (0) | 2022.05.20 |
pyinstaller 사이즈 최적화 (0) | 2022.04.16 |
pyautogui정리 (0) | 2022.04.14 |
메뉴엑션에 한글이름메쏘드 연결하기 : lambda (0) | 2021.11.16 |
댓글