[wecode assignment] Python Function Parameters

DONGHYUN KOO·2020년 8월 22일
0

python

목록 보기
1/19
post-thumbnail

Function Parameters

1. Positional arguments

positional arguments는 parameter 값을 넣어준 순서대로 호출 해주어야 한다.

2. Keyword Arguments

positional arguments의 경우 순서에 맞춰서 parameter 값을 호출해주어야 한다. 그러나 Keyword Arguments방식으로 parameter 값을 호출하면 parameter 값의 순서가 바뀌어도 정상적으로 적용된다.

  • 장점
    순서가 바뀌어도 괜찮다는 점 말고도 또 가독성도 높아진다는 점도 있습니다.keyword arguments는 parameter 이름에 맞추어서 값을 함수에 넘기기 때문에 실수로 값이 바뀔 확률이 상대적으로 적다고 할 수 있습니다.

3.Mixing positional arguments and keyword arguments

순서를 맞추어서 parameter 값을 호출하는 positional arguments와 순서와 상관 없는 keyword arguments를 혼용하여 사용하는것도 가능하다.

** 주의점은 순서를 지켜야한다.
positional argument>keyword argument 순서

4.Parameter Default Value

  • 함수의 parameter 값에 default 값을 정의해 줄 수 도 있다.
  • Default 값이 정의된 paramter 값은 함수가 호출될 때 값을 넘기지 않아도 된다.
  • 값을 넘기지 않은 경우 default 값이 자동으로 넘겨지게 된다.
  • Default 값을 정의하는 이유는 주로 사용하는 paramter 값이 있으면서 가끔 다른 paramter 값을 사용해야할 때 활용한다

5. Arguments의 우선순위

함수 내에서 사용하는 arguments는 순서
1. positional arguments(순서가 정해져 있음)
2. default arguments (default값이 지정된 arguments)
3. positional arguments들의 집합
4. keyword arguments (함수를 호출할 때 값을 지정)
5. keyword default arguments (keyword arguments에 default 값이 지정된 경우)
6. keyword arguments의 집합
참조: https://getkt.com/blog/python-keyword-only-arguments/

Assignment

1번.default value parameter를 non-default value parameter 앞에 정의 하면 안되는 이유

  • Arguments의 순서에 맞지 않게되면 문법적 오류가 발생하기 때문

2번. 위치인수와 가변인수의 순서가 잘못되어 오류 발생하여
*args(가변매개변수) 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("정우성", "01012341234", "seoul", 20)

3번.가변키워드인수가 가장 마지막에 위치해야해서 address와 위치를 바꿔야 하고 default값이 있는 address는 position보다 뒤에 와야되기 때문에 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("정우성", "20", mobile="01012341234", address="seoul")

4번. 위치인수, 가변인수, 가변키워드인수가 모두 들어간 함수
argumets 우선순위에 따라 수정

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

0개의 댓글