TIL Function Parameters (Oct 22)

Jae Hoon Shin, 신재훈, Noah·2020년 10월 22일
0

Function Parameters

Keyword arguments 방식으로 parameter 값을 전해주면 실제 parameter 순서가 바뀌어도 괜찮습니다.parameter 순서에 맞추어 값을 함수에 넘기는 경우, 실수로 값이 바뀌어도 알기가 힘들다는 단점이 있습니다.

그에 비해 keyword arguments는 parameter 이름에 맞추어서 값을 함수에 넘기기 때문에 실수로 값이 바뀔 확률이 상대적으로 적다고 할 수 있습니다.

Mixing positional arguments and keyword arguments

이렇게 두 방법을 섞어도 되지만 순서를 꼭 지켜야하는 positional은 무조건 순서를 지켜야한다.
안 그러면 에러가 난다.

Parameter Default Value

Default 값이 정의된 paramter는 함수가 호출될때 값이 넘겨지 않아도default 값이 자동으로 넘겨지게 됩니다!!
다만 조심해야 할점은 default 값이 정의된 parameter가 default 값이 정의 되지 않은 parameter 보다 먼저 위치해 있으면 안된다는 점입니다. 만일 default value parameter를 non-default value parameter 앞에 선언하면 syntax error가 납니다.

Assignment

리서치를 해보니까 순서가 바뀌면 컴퓨터가 무엇을 어디에 놓아야될지 몰라서 에러가 난다고 하는데
더 디테일한 이유: 바로 위 사진을 보면 my_name = "정우성"은 default 입니다. 그렇다면, default라면 love {your_name} 만 써도 문장이 완성 되어야하는데,

컴퓨터는 아이유를 기점으로 정우성 love를 앞에다 써야할지 뒤에다 써야할지 모르기 때문입니다.
or
love 아이유를 기점으로 정우성을 앞에다 써야할지 뒤에다 써야할지 모르기 때문입니다.

아래 코드가 에러가 나는 이유!

를 알기 전에 일단 arguments의 우선순위를 알아야 한다.
args의 우선순위

Regular positional args ->

Default args ->

Variable length positional args ->

Non-default args ->

Keyword-Only args with default ->

Variable length kwargs**

아래 코드는 에러가 난다.

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)

TypeError: func_param_with_var_args() missing 1 required keyword-only argument: 'age'
*args가 가변인수이기 때문에 순서상 뒤로 가야한다.
출력은 포지션인 정우성 , 01012341234 가 먼저 나오고 뒤에 가변인수 2개가 나온다.

아래 코드가 에러가 나는 이유!

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

이것도 args의 우선순위를 먼저 잘 파악해야한다. address = 0 는 default position이기 때문에 **kwargs, address 의 순서를 바꿔주면 된다.

중요 ! args의 우선순위를 익히고 기억하고 개념을 이해하자

추가개념: 유튜브로 리서치해본 결과, parameter 와 argument는 기본적으로 같지만, parameter는 그것 대로 존재할 수 있지만, argument는 함수에서 데이터를 불러와야 결정되고 출력될수 있는? 데이터가 passed through 해야 된다 것이였다.

Parameters are inside functions or procedures, while arguments are used in procedure calls,
i.e. the values passed to the function at run-time.

profile
🇰🇷🇺🇸 #Back-End Engineer

0개의 댓글