ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬의 *args와 **kwargs
    Python 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

    출처:
    https://www.geeksforgeeks.org/args-kwargs-python/

    반응형
Designed by Tistory.