[Python] 파라미터 앞에 *, ** 의 의미? (*args, **kwargs)
by Roel Downey728x90
반응형
참고 : http://stackoverflow.com/questions/3394835/args-and-kwargs
다른사람들이 작성한 python 코드를 보다보면
*args, **kwargs 를 심심치 않게 본다.
그냥 막연하게 "어떤 파라미터를 몇개를 받을지 모르는 경우 사용한다" 라고 알고 있었지만
*args
- arguments 의 줄인 표현
- 파라미터를 몇개를 받을지 모르는 경우 사용한다.
- args 는 튜플 형태로 전달된다.
예제)
def print_param(*args):
print(f"> agrs : {args}")
for p in args:
print(f"> arg - {p}")
print_param("a", "b", "c", "d")
Output
# > args : ('a', 'b', 'c', 'd')
# > arg - a
# > arg - b
# > arg - c
# > arg - d
**kwargs
- keyword arguments 의 줄인 표현
- 파라미터 명을 같이 보낼 수 있다.
- kwargs는 딕셔너리 형태로 전달된다.
예제)
def print_param2(**kwargs):
print(f"> kwargs : {kwargs}")
print(f"> kwargs.keys() : {kwargs.keys()}")
print(f"> kwargs.values() : {kwargs.values()}")
for key, value in kwargs.items():
print(f"> key, value - {key} : {value}")
print_param2(first="a", second="b", third="c", fourth="d")
Output
# > kwargs: {'first': 'a', 'second': 'b', 'third': 'c', 'fourth': 'd'}
# > kwargs.keys(): dict_keys(['first', 'second', 'third', 'fourth'])
# > kwargs.values(): dict_values(['a', 'b', 'c', 'd'])
# > key, value - first: a
# > key, value - second: b
# > key, value - third: c
# > key, value - fourth: d
그러면 두개를 같이 쓰는 예제를 보자!
예제)
def print_param3(*args, **kwargs):
print(f"> args : {args}")
print(f"> kwargs : {kwargs}")
print_param3("a", "b")
# args : ('a', 'b')
# kwargs : {}
print_param3(third="c", fourth="d")
# args : ()
# > kwargs : {'third': 'c', 'fourth': 'd'}
print_param3("a", "b", third="c", fourth="d")
# args : ('a', 'b')
# > kwargs : {'third': 'c', 'fourth': 'd'}
응용 해 보자!
예제)
def print_param4(a, b, c):
print(f"> a,b,c - {a, b, c}")
p = ["a", "b", "c"]
print_param4(*p)
# > a,b,c - ('a', 'b', 'c')
p2 = {"c": "1", "a": "2", "b": "3"}
print_param4(**p2)
# > a,b,c - ('2', '3', '1')
728x90
반응형
'Python' 카테고리의 다른 글
[Python] 가상환경 및 모듈 설치 (0) | 2023.02.28 |
---|---|
[Python] 우분투(Ubuntu)에서 pip & pip3 설치(install) 방법 (0) | 2021.05.07 |
[Python] 곱집합(Cartesian product) 구하기 - product (0) | 2021.05.06 |
[Python] 삼각형 별찍기 - sequence type의 * 연산 (0) | 2021.05.06 |
[Python] sequence 멤버를 하나로 이어붙이기 - join (0) | 2021.05.06 |
블로그의 정보
What doing?
Roel Downey