Python
파이썬의 *args와 **kwargs
HanSeokhyeon
2020. 1. 21. 16:26
반응형
파이썬 코드를 보다보니 함수 인자에 args와 *kwargs가 있는데 잘 몰라서 찾아보았다.
1. *args
*args는 함수의 인자로 들어온 내용이 list에 담긴다고 생각하면 된다.
def myFun(*args):
for arg in args:
print(arg)
myFun('Hello', 'Welcome', 'to', 'HanSeokhyeon')
output:
Hello
Welcome
to
HanSeokhyeon
남은 인자를 싹 담는다.
def myFun(arg1, *args):
print("First: {}".format(arg1))
for arg in args:
print("Next: {}".format(arg))
myFun('Hello', 'Welcome', 'to', 'HanSeokhyeon')
output:
First: Hello
Next: Welcome
Next: to
Next: HanSeokhyeon
2. **kwargs
**kwargs는 함수의 인자로 들어온 내용이 dictionary에 담긴다고 생각하면 된다. Dictionary에 담기 위해 key를 지정해줘야한다.
def myFun(**kwargs):
for key, value in kwargs.items():
print ("%s == %s" %(key, value))
myFun(first ='Han', mid ='seok', last='hyeon')
output:
first == Han
mid == seok
last == hyeon
마찬가지로 가능하다.
def myFun(arg1, **kwargs):
print("First: {}".format(arg1))
for key, value in kwargs.items():
print ("%s == %s" %(key, value))
myFun('Hi', first ='Han', mid ='seok', last='hyeon')
output:
First: Hi
first == Han
mid == seok
last == hyeon
3. args와 *kwargs 둘 다 사용하기
같이 쓰면 key가 없으면 args로, key가 있으면 kwargs로 들어간다.
def myFun(*args, **kwargs):
for arg in args:
print("args: {}".format(arg))
for key, value in kwargs.items():
print ("%s == %s" %(key, value))
myFun('Hi', 'everyone', first ='Han', mid ='seok', last='hyeon')
output:
argv: Hi
argv: everyone
first == Han
mid == seok
last == hyeon
반응형