가변 인수(variable length arguments)

def func_param_with_var_args(name, *args, age):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)


func_param_with_var_args("정우성", "01012341234", "seoul", 20)

위 함수를 호출하면 에러가 발생하는데 이는 Python Fuction Arguments 의 순서를 고려했을 때 *args(variable-length positional arguments) 뒤에 있는 20 을 age=20 (keyword-only arguments)으로 수정하면 에러 없이 호출 할 수 있습니다.

가변 키워드 인수 (variable length keyword arguments)

def func_param_with_kwargs(name, age, **kwargs, address=0):
    print("name=",end=""), print(name)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)


func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul")

위 함수도 에러가 발생하는데 다시 Python Function Arguments 의 순서를 고려해서, **kargs 를 address=0 뒤로 보내주면 에러 없이 호출 할 수 있습니다.

가변 인수(variable length arguments) 와 가변 키워드 인수 (variable length keyword arguments)

def mixed_params(name="아이유", *args, age, **kwargs, address):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)


mixed_params(20, "정우성", "01012341234", "male" ,mobile="01012341234", address="seoul")

구문이 잘못 작성되었다는 에러가 발생합니다. Python Function Arguments의 순서에 맞추어 age (positional arguments), name="아이유" (default value arguments), *args(variable-length positional arguments),address (keyword-only arguments), **kargs(variable-length keyword arguments)으로 수정하면 에러 없이 호출 할 수 있습니다.


가변 인수(variable length arguments)는 tuple 형태로 지정되고 가변 키워드 인수 (variable length keyword arguments)는 dictionary 형태로 지정되기 때문에 둘 다 사용하면 어떠한 형태와 수의 arguments도 허용 가능한 함수가 됩니다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN