Python. 매개변수,인수 순서

Hoontae.KIM·2021년 7월 10일
0
post-thumbnail

Parameters

Parameters매개변수로 python 언어에서 종류가 다양하며 순서에 맞지 않게 사용 하면 오류가 생길 수 있습니다.
매개변수의 순서로는
1. 위치인수 ex)name, age등
2. 가변인수 ex) * arg
3. 기본값인수 ex) name = "홍길동"
4. 키워드인수 ex) it_s_me(age=20, address="서울")
5. 가변 키워드 인수 ex) * * kwargs

1) 함수를 정의 할때 default value parameter를 non-default value parameter 앞에 정의 하면 안 되는 이유는 무엇일까?

def friend(name, age):
	print(f"name: {name}, age: {age}")
friend("mina", 27)
def friend(name, age):
	print(f"name: {name}, age: {age}")
friend(27,name = "mina")

순서를 다르게 하여 오류가 나왔다,
기본적으로 기본값매개변수는 일반매개변수 뒤에 나와야한다.

2) 위치 인수(positional arguments)와 가변 인수(variable length arguments)의 위치를 참고 자료를 통해 조사해서 어떤 에러가 발생 하는지 확인하고, 에러를 고쳐 정상적으로 출력하자!

-수정 전-
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'코드를 입력하세요
-수정 후-
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)

name=정우성
args=('seoul', 20)
age=01012341234

매개변수 순서가 잘못되어 age*args 의 순서를 변경해 오류를 없앴다.

3) 가변 키워드 인수 (variable length keyword arguments)의 위치를 참고 자료를 통해 조사해서 어떤 에러가 발생 하는지 확인하고, 에러를 고쳐 정상적으로 출력하자!

-수정 전-
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")

SyntaxError: invalid syntax
-수정 후-
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")

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

**kewords인 가변키워드 인수는 가장 마지막 순서로 오게 된다.

4) 위치 인수와 키워드 가변 키워드 인수 (variable length keyword arguments)의 위치를 위치를 참고 자료를 통해 조사해서 어떤 에러가 발생 하는지 확인하고, 에러를 고쳐 정상적으로 출력하자!

-수정 전-
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: invalid syntax
-수정 후-
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

address같은 경우 키워드 인수이기 때문에 *args인 가변인수뒤 **kewords 가변키워드 인수 앞으로 순서가 오게 됩니다.

자세히 보지 않으면 놓칠 수 있기 때문에 중요하게 기억하고 생각해야하는 부분이라고 생각한다.

profile
💻 STUDY RECORD

0개의 댓글