함수와 파라미터 전달 방법과 순서에서 정리한 것처럼 파라미터는 종류에 따라 다음과 같이 순서가 존재합니다.
- Positional Arguments
- Positional Arguments with Default
- Variable Length Arguments
- Keyword Arguments
- Keyworld Arguetns with Default
- Variable Length Keyword Arguments
위코드 리플릿 28번 문제를 통해 이를 복습해보려고 합니다.
1. postional 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)
위 함수에서는 *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("정우성", 20, "01012341234", "seoul")
# name=정우성
# args=('01012341234', 'seoul')
# age=20
2. variable length keyword arguments와 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")
위 함수에서는 variable length keyword argument와 keyworld argument의 위치를 수정해야 합니다.
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
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")
마지막 문제는 각 arguments의 위치를 모두 이해하고 있는지를 묻는 문제였습니다. 오류가 발생하는 코드를 다음과 같이 수정할 수 있습니다.
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
positional arguments를 먼저 정리하고, 다음으로 keyword arguments를 정리했습니다. 함수 파라미터 선언에 지정된 값은 positional arguments의 default 값이고, 파라미터에 값을 지정하고 함수의 파라미터로 전덜하는 것은 keyword arguments라는 점을 다시 한 번 정리할 수 있었습니다.
반응형
'TIL' 카테고리의 다른 글
파이썬 이메일, 비밀번호, URL 유효성 검사 정규 표현식 - TIL 6 (0) | 2022.01.16 |
---|---|
장고 db_table 이름 지정과 활용 방법 - TIL 5 (0) | 2022.01.12 |
데이터 유형과 데이터베이스 종류 - TIL 4 (0) | 2022.01.11 |
파이썬 리스트에서 홀수 제외하기 - TIL 3 (0) | 2022.01.05 |
파이썬 중첩 if문 처리하기 - TIL 1 (0) | 2021.12.30 |