Python - parameter(매개변수)

Nicholas·2022년 4월 27일
0

Python

목록 보기
27/31

Q1. 함수를 정의 할때 default value parameter를 non-default value parameter 앞에 정의 하면 안 되는 이유

A1. parameter(매개변수)의 구문은 우선순위에 의해 배치된다.

  • 우선순위
  1. 위치 매개변수(non-default value parameter)
    • 호출시 정해진 순서대로 인수를 받아 돌려준다.
    • 변수의 갯수와 인수의 갯수가 다를경우 오류가 생긴다.
  2. 기본 매개변수(default value parameter)
    • 호출전 미리 매개변수에 기본값을 넣어둔 변수를 말한다.
    • 호출때 변수의 갯수보다 인수의 갯수가 적은경우 기본값이 반영된다.
    • 위치매개변수가 있을경우 위치매개변수를 먼저 쓰고 뒤에 쓴다.
  3. 가변매개변수
    • 가변매개변수는 여러개의 인자를 하나의 변수로 받을 수 있다.
    • 모든 매개변수를 쓰고난뒤 가장 마지막에 사용할 수 있다.
    • 튜플형이 먼저오고 딕셔너리형이 가장마지막에 사용한다.
    • 튜플형 : 매개변수앞에 '*' 붙는다 ( *args), 받은인자를 튜플로 묶어 돌려준다.
    • 딕셔너리형 : 매개변수앞에 '**' 붙는다 ( **args), 받은 인자를 딕셔너리로 묶어서 돌려준다.

Q2. 위치 인수(positional arguments)와 가변 인수(variable length arguments)의 위치관련 에러

A2.

def func_param_with_var_args(name, *args, age):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)

에러내용:
TypeError: func_param_with_var_args() missing 1 required keyword-only argument: '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)
 
 >>> name=정우성
	 args=('seoul', 20)
	 age=01012341234

Q3. 가변 키워드 인수 (variable length keyword arguments)의 위치관련 에러

A3.

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

에러내용
SyntaxError: invalid syntax

  • 매개변수의 우선순위에 따른 배치 오류

해결

  • 우선순위에 맞게 재배치

Q4.위치 인수와 키워드 가변 키워드 인수 (variable length keyword arguments)의 위치 관련 에러

A4.

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

에러내용
SyntaxError: positional argument follows keyword argument

  • 매개변수 우선순위에 따른 배치 오류 및 매개변수와 인자들의 매칭오류

해결

  • 우선순위에 맞게 재배치 후 인수 재배치
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", address="seoul",  mobile="01012341234" )
profile
WEB Developer

0개의 댓글