[TIL][Repl.it]Python_28.과제

김예진·2020년 9월 19일
0

TIL

목록 보기
21/40
post-thumbnail

Repl.it 과제 내용이다! function과 function parameter, parameter 순서에 대해서는 이전 TIL에 남겨놓고 이번 글에서는 과제에 대해서만 정리하려고 한다.

1.

함수를 정의 할때 default value parameter를 non-default value parameter 앞에 정의 하면 안된다. 왜 안되는 것인가?

default value parameter 는

기본 값을 정해준 parameter로,
keyword로 이름을 지정했기 때문에 순서에 상관 없다.

non-default value parameter는

기본 값이 정해지지 않은 parmeter로,
position argument와 같이 입력한 순서대로 값을 넣어 호출하기 때문에 순서가 중요하다.

dafault value parmeter가 non-default value parameter보다 앞에 있을 경우 position(순서)가 중요한 non-default value parameter들이 순서를 찾지 못하게 되고 에러가 발생하게 되는 것이다.

2.

위치 인수(positional arguments)와 가변 인수(variable length arguments)의 위치를 참고 자료를 통해 조사해서 어떤에러 인지 확인하고 함수가 호출되도록 에러를 고치고 호출후에 출력되는 결과 확인하기.

가변인자이며 position argument인 *args 가 age 앞에 순서하면,
name에는 "정우성"
*args에는 "01012341234","seoul", 20 까지 포함되기 때문에 
age의 값을 찾을 수 없다는 에러가 발생한다. 

age를 name뒤에 위치시키고 args를 맨 마지막으로 이동시켜 순서를 맞춰주면,

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

이렇게 출력된다.

3.

가변 키워드 인수 (variable length keyword arguments)의 위치를 다음 참고 자료를 통해 조사해서 어떤에러 인지 확인하고 함수가 호출되도록 에러를 고치고 호출후에 출력되는 결과 확인하기.

**kwars 역시 가변인자이므로 mobile="01012341234"와 address="seoul"까지 값을 가져서
address=0 으로 default value parameter의 값이 입력되지 않았다. 
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")
adress=0의 자리와 **kwargs의 자리를 바꿔주면 

name=정우성
age=20
kwargs={'mobile': '01012341234'}
address=seoul

정상적으로 출력된다.

4.

위치 인수와 키워드 가변 키워드 인수 (variable length keyword arguments)의 위치를 다음 참고 자료를 통해 조사해서 어떤에러 인지 확인하고 함수가 호출되도록 에러를 고치고 호출후에 출력되는 결과 확인하기.

순서대로 
name="아이유"는 기본값이 정해진 default value parameter이고, 
*args는 가변인자, 순서대로 입력받는 position argument
age는 기본parameter
**kwargs는 가변인자, 키워드로 입력받는 keyword argument
address는 기본값이 정해지지 않은 non-default keyword-only argument다. 

위 사진에 나온 순서대로라면,
기본 변수인 age < defult arg인 name="아이유" < 가변 포지션 인자인 *args < 기본값이 정해지지않은 키워드 arg인 address < 가변 키워드 인자인 **kwargs 이다.

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

순서에 맞춰 코드를 변경하면,

name=정우성
args=('01012341234', 'male')
age=20
kwargs={'mobile': '01012341234'}
address=seoul

내용이 출력된다.

profile
Backend Developer 🌱 벨로그 내용을 티스토리로 이사중~!

0개의 댓글