[Python]WeCode-parameter

정현석·2020년 10월 23일
0

Parameter

위에 코드 처럼 순서대로 값이 parameter로 함수에 전해지는 경우가 기본입니다.

Keyword Arguments

위에 처럼 순서대로 맞추어서 값을 전해주지 않으면 에러가 나와 순서 대신에 parameter 이름으로 맞추어서 값을 전해줄 수 있는 것이 keyword argments라고 합니다.

  • Keyword arguments 방식으로 parameter 값을 전해주면 순서가 바꿔어도 출력 가능합니다.

  • 장점으로는 순서에 관계없이 값을 전해줄 수 있고, 코드를 읽는사람이 어떠한 값을 넘기는건지 명확하게 알 수 있어 가독성이 높아진다는 점이 있습니다.

  • parameter 순서에 맞추어 값을 함수에 넘기는 경우에는 실수로 값이 바뀌어도 알기가 어렵다는 단점이 있어 keyword arguments를 많이 사용합니다.

    default value parameter, non-default value parameter

  • 함수의 parameter 에 default 값을 정의 할 수 있습니다.
    default 값이 정의된 parameter는 함수가 호출될 때 값이 넘겨지지 않아도 error 가 출력되지 않고, default값이 대신 출력됩니다.

  • 주의점은 default 값이 정의된 parameter가 default 값이 정의 되지 않은 parameter 보다 먼저 위치해 있으면 안됩니다!

    위치인수(positional arguments)와 가변인수(variable length arguments)를 같이 사용할 경우는 먼저 위치인수부터 사용해야 에러가 나타나지 않습니다.

 1.
 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)
 * 위치인수부터 사용 후 가변인수는 마지막에 작성 
   * 변경 후
```python
1.1 
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. ```python
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")

- 위치인수부터 사용 후 가변인수 마지막에 작성, mobile 변수같은 경우 function에서 호출되지 않기 때문에 가변인수로 사용하려면 제일 마지막에 호출하여야 합니다.
  * 변경 후
```python
2.2 
  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", address="seoul" , mobile="01012341234")

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

- 위치 인수를 가장 먼저 사용해야되며, keyword arguments, *args, **kwargs 순서로 사용한다. (위치 인수라도 출력 값에 키워드가 나와있는 경우에는 위치인수, 키워드 인수 다음에 사용해야 합니다.)
   - 변경 후 
3.3. 
 def mixed_params(age, name="아이유", *args, address, **kwargs):
    print("name=",end=""), print(name)
    print("age=",end=""), print(age)
    print("args=",end=""), print(args)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)
mixed_params(20, "정우성" , "01012341234", "male" ,  mobile="01012341234" , address="seoul")
profile
기록하는 벨로그

0개의 댓글