Function Parameters2 (arguments)

김기현·2022년 1월 29일
0
post-thumbnail

1. 위치 인수(Positional) VS 가변 인수(Varlable length)

Error Code

아래의 코드는 파라미터의 순서에 문제가 있어 TypeError를 일으킵니다.

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)

파이썬은 다음과 같은 순서로 파라미터를 받아들입니다.

Regular positional args
-> Default args
-> Variable length positional args
-> Non-default args
-> Keyword-Only args with default (*args)
-> Variable length kwargs** (**kwargs)

Clean Code1

age에 값을 할당해서 함수를 호출합니다.

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",age= 20)

Clean Code2

컴퓨터가 파라미터를 받아들이는 순서대로 인자들의 순서를 바꾸어줍니다.

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("정우성", 20, "01012341234", "seoul")


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

Error Code

다음의 코드는 SyntaxError를 일으킵니다.

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")

위에서 언급했듯이, 함수의 위치 가변키워드 인수의 순서가 잘못되었기 때문입니다.

Clean Code

아래의 코드와 같이 파라미터에 값을 받을 수 있도록 순서를 바꾸어줍니다.

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("정우성", "20", mobile="01012341234", address="seoul")


3. 위치 인수와 키워드 가변 키워드 인수의 위치

Error Code

다음의 코드 역시 SyntaxError을 일으킵니다.

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")

Clean Code

  1. Keyword-Only Argumentaddress가 올바른 위치를 찾지 못함.
    (Keyword-Only Argument는 Variable Length Keyword Arguments(**kwargs) 앞에와야함)
  2. position인자인 age가 앞으로 이동되야함.
def mixed_params(age, name="아이유", *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, "정우성", "01012341234", "male" ,mobile="01012341234", address="seoul")

profile
피자, 코드, 커피를 사랑하는 피코커

0개의 댓글

관련 채용 정보