*args 와 **kwags

BackEnd_Ash.log·2020년 2월 16일
0

파이썬

목록 보기
5/34

*args

args 는 arguments 의 줄임말이다.

*args 는 키워드 되지않은 가변 갯수의 인자들을 함수에 보낼때 사용한다.

굳이 꼭 args 라고 사용하지 않아도 되지만 , 저것으로 쓰자고 통용?? 되어있는것 같다 .
jakdu 이렇게 적어도 사실 무방하기 하다 .

이 지시어는 여러 개 (복수개) 의 인자를 함수로 받고자 할때 쓰인다.

def func(*args):
    print(args)


func()  # ()
func(1)  # (1,)
func(1, 2)  # (1, 2)
func(1, 2, 3)  # (1, 2, 3)

def func(*args) 값들이 튜플로 묶여서 args 에 전달이 된다.
다른 예시를 좀 더 보겠다.

def test_var_args(f_arg, *argv):
    print("첫 번째 인자:", f_arg)  # 첫 번째 인자: 야숩
    for arg in argv:
        print("*argv의 다른 인자", arg)
        # *argv의 다른 인자 python
        # *argv의 다른 인자 달걀
        # *argv의 다른 인자 test


test_var_args('야숩', 'python', '달걀', 'test')

    
def who(a, b, c):
    print(a, b, c, sep=',')


d = dict(a=1, b=2, c=3)
who(*d)  # 이렇듯 *을 붙이면 키가 매개변수에 전달된다.
# a, b, c
who(**d)  # ** 을 붙이면 값이 매개변수에 전달된다.
# 1, 2 , 3

**kwargs

kwargs 는 keyword argument의 줄임 말이다.

def func(**args):
    print(args)  # args 는 딕셔너리


func(a=1)  # {'a':1} 생성되어 args에 전달
func(a=1, b=2)  # {'a':1 , 'b':2} 생성되어 args 에 전달
func(a=1, b=2, c=3)  # {'a':1 ,'b':2,'c':3}


def greet_me(**kwargs):
    if kwargs is not None:
        for key, value in kwargs.items():
            print("%s == %s" % (key, value))  # python3: print("%s == %s" % (key, value))


greet_me(name="yasoob")

**kwargs 는 (키워드 = 특정값) 형태로 함수를 호출할 수 있다.
그것은 그대로 딕셔너리 형태로 {'키워드' : '특정 값' }
이렇게 함수 내부로 전달이 된다.

*args **kwargs

매개변수 선언에 있어서 다음과 같이 *args 와 **args 를 동시에 둘 수있다.

def func(*args1, **args2):
    print(args1)  # args 은 튜플
    print(args2)  # args2 는 딕셔너리


print(func(1, a=1))
# (1,)
# {'a': 1}
print(func(1, 2, a=1, b=2))
# (1, 2)
# {'a': 1, 'b': 2}
profile
꾸준함이란 ... ?

0개의 댓글