당신의 친절한 이웃, 코딩맨

# 15 Python 위치 인수(positional arguments)와 가변 인수(variable argumetns)의 오류들 본문

Today I Learn (TIL)

# 15 Python 위치 인수(positional arguments)와 가변 인수(variable argumetns)의 오류들

이웃집 친구 2020. 6. 24. 20:00
반응형

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)

 

- 옵셔널 파라미터 중 여러개의 파라미터를 입력받는 *arg 파라미터는 TIL#13에서 소개한 바와 같이, 제일 끝에 위치해야한다.

- 해당 호출 argument에서 name과 age에 알맞은 값이 들어가게 순서를 바꾼다.

 

수정 후

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

출력 :

name=정우성

args=('01012341234', 'seoul')

age=20

 

 

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

 

- 키워드 파라미터 kwarg가 position argument 사이에 껴있다. - 위치 수정 필요

- 키워드 파라미터를 뒤로 보내서 신택스 오류를 해결

 

※ ** 키워드 파라미터: key, value값의 딕셔너리 형태로 결괏값이 나온다.

 

 

수정 후

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

출력:

name=정우성

age=20

kwargs={'mobile': '01012341234'}

address=seoul

 

 

 

def mixed_params(name="wecode", *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")

 

- 함수의 파라미터의 배치가 잘 못 되어 있다.

- 호출의 arguments의 배치가 잘 못 되어 있다.

- **kwarg는 제일 뒤로 배치

- 파라미터 address의 재배치

- age는 보통의 position argument 이기 때문에 앞 순으로 배치

- address는 입력값에서 정의되었기 때문에, *arg와 **kwargs 사이 배치

 

 

def mixed_params(age, name="wecode",*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")

출력:

name=정우성

args=('01012341234', 'male')

age=20 kwargs={'mobile': '01012341234'}

address=seoul

Comments