상위 목록: 하위 목록: 작성 날짜: 읽는 데 12 분 소요

인자(Argument)

인자(Argument)매개변수(Parameter)에 전달되는 실질적인 값(value)를 의미합니다.

함수에 정의된 값을 전달하는 것이 인자가 됩니다.

def func(a, b)에서 a, b는 매개변수가 되며, a와 b에 전달하는 값이 인자입니다.

Python에서는 사전에 정의되지 않은 여러 개의 인자를 전달할 수 있습니다.



*args(Tuple)

def func(*args):
    print("Type:", type(args))
    print("Lenght:", len(args))
    print(args)


func([1, 2], 3, 4, (5))
결과
Type: <class ‘tuple’>
Lenght: 4
([1, 2], 3, 4, 5)

매개변수를 할당할 때 *args를 사용한다면, 여러 개의 인자를 받아 처리할 수 있습니다.

args는 argument의 약어로, 매개변수의 이름을 *args가 아닌, 다른 이름으로도 할당이 가능합니다.

매개변수의 이름에 와일드카드(*)가 작성되면, 입력되는 인자들을 튜플로 처리합니다.

입력된 인자들의 순서에 따라 args 변수에 값이 할당됩니다.



**kwargs(Dictionary)

def func(**kwargs):
    print("Type:", type(kwargs))
    print("Lenght:", len(kwargs))
    print(kwargs)


func(a=1, b=2, c=3)
결과
Type: <class ‘dict’>
Lenght: 3
{‘a’: 1, ‘b’: 2, ‘c’: 3}

매개변수를 할당할 때 **kwargs를 사용한다면, 여러 개의 인자를 받아 처리할 수 있습니다.

kwargs는 keyword argument의 약어로, 매개변수의 이름을 **kwargs가 아닌, 다른 이름으로도 할당이 가능합니다.

매개변수의 이름에 와일드카드(*)두 번 작성되면, 입력되는 인자들을 사전으로 처리합니다.

입력된 인자들의 키 값에 따라 kwargs 변수에 값이 할당됩니다.



*args(Tuple), **kwargs(Dictionary) 혼용

def func(*data, **method):
    num = sum(data) * method["scale"]
    print(num, method["unit"] + "입니다.")


func(3, 4, 5, scale=10, unit="개")
결과
120 개입니다.

*args**kwargs를 동시에 사용한다면, *args, **kwargs 순서로 사용합니다.

키(Key) 값이 할당되지 않은 인자는 *args로 처리하며, 할당된 인자는 **kwargs로 처리합니다.

기본 인자가 포함되는 경우 다음과 같이 사용할 수 있습니다.


def func(*data, message, **method):
    print(message)

    num = sum(data) * method["scale"]
    print(num, method["unit"] + "입니다.")

func(3, 4, 5, message="계산된 값입니다.", scale=10, unit="개")
결과
계산된 값입니다.
120 개입니다.

위치 인자(Positional Argument)는 항상 **kwargs 보다 앞에 있어야합니다. 즉, **kwargs가 가장 마지막에 있어야합니다.

위치 인자는 항상 키(Key)를 갖고 있기 때문에, *args보다 뒤에 올 수 있습니다.

단, 위치 인자가 *args보다 뒤에 있을 경우, 키(Key)를 명시해야합니다.

위치 인자가 *args보다 앞에 있을 경우, 키(Key)를 명시하지 않아도됩니다.

위치 인자가 앞에 포함되는 경우 다음과 같이 사용할 수 있습니다.


def func(message1, message2, *data, **method):
    print(message1)
    print(message2)

    num = sum(data) * method["scale"]
    print(num, method["unit"] + "입니다.")

func("계산된 값입니다.", "값이 10배 커집니다.", 3, 4, 5, scale=10, unit="개")
결과
계산된 값입니다.
값이 10배 커집니다.
120 개입니다.

위치 인자가 앞에 포함되면, 매개변수의 순서대로 값이 할당됩니다.

*args(Tuple)**kwargs(Dictionary)를 혼용해 사용하는 경우 매개변수의 할당 순서가 중요합니다.

매개변수의 개수와 일치하지 않는 경우, message23이 할당되어 함수가 잘못된 결과를 반환할 수도 있습니다.

댓글 남기기