Function Parameters 위치 정리 *args, **kwargs
위치 인수(positional arguments)와 가변 인수(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("faker", "01012341234", "seoul", 20)
Traceback (most recent call last):
File "main.py", line 6, in <module>
func_param_with_var_args("faker", "01012341234", "seoul", 20)
TypeError: func_param_with_var_args() missing 1 required keyword-only argument: 'age'
가변 인수(*args)는 순서상 가장 마지막에 와야하는데, 위에 작성된 코드는 *args가 중간에 들어와 이후에 해당되는 모든 argument를 가져가게 된다.
TERMINAL보다 뒤에 있는 age에 해당하는 argument 1개가 없기 때문에 error가 났다.
def func_param_with_var_args(name, age, *args):
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("age=",end=""), print(age)
func_param_with_var_args("faker", 20, "01012341234", "seoul")
name=faker
args=('01012341234', 'seoul')
age=20
*args를 마지막으로 순서바꿔서 해결
function argument 순서
Regular positional args -> Default args -> Variable length positional args ->
Non-default args -> Keyword-Only args with default -> Variable length kwargs**
가변 키워드 인수 (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("showmaker", "20", mobile="01012341234", address="seoul")
File "main.py", line 1
def func_param_with_kwargs(name, age, **kwargs, address=0):
^
SyntaxError: invalid syntax
잘못된 문법으로 인한 error.
가변 키워드 인수(**kwargs)는 가장 마지막에 와야하고, address는 default args이니까 positional args인 name과 age보다 뒤에 위치해야 한다.
def func_param_with_kwargs(name, age, address=0, **kwargs):
print("name=",end=""), print(name)
print("age=",end=""), print(age)
print("kwargs=",end=""), print(kwargs)
print("address=",end=""), print(address)
func_param_with_kwargs("showmaker", "20", mobile="01012341234", address="seoul")
name=showmaker
age=20
kwargs={'mobile': '01012341234'}
address=seoul
위치 인수와 키워드 가변 키워드 인수 (variable length keyword arguments)의 위치
def mixed_params(name="showmaker", *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, "faker", "01012341234", "male" ,mobile="01012341234", address="seoul")
File "main.py", line 1
def mixed_params(name="아이유", *args, age, **kwargs, address):
^
SyntaxError: invalid syntax
잘못된 문법으로 인한 error.
파이썬 문법 순서에 맞춰서 나열하자면 다음과 같다.
앞에서부터 순서대로 position args인 age가 첫번째, default args인 name="showmaker", Variable length positional args인 *args, Non-default args인 address, Variable length kwargs인 **kwargs가 가장 마지막으로 오면 error 없이 잘 출력되는 것을 볼 수 있다.
def mixed_params(age, name="showmaker", *args, address, **kwargs):
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, "faker", "01012341234", "male" ,mobile="01012341234", address="seoul")
name=faker
args=('01012341234', 'male')
age=20
kwargs={'mobile': '01012341234'}
address=seoul
완료.
참고자료
Author And Source
이 문제에 관하여(Function Parameters 위치 정리 *args, **kwargs), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rosewoodowon/Function-Parameters저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)