함수형 프로그래밍 대부분은
Prameter(전달인자) 를 통해서 문제를 해결한다.파리미터는 변수와는 조금 다른 개념이다.
변수에 Parameter의 값을 대입할 수는 있지만,
변수가 Parameter는 아니다.
이 점을 착안해서 파이썬의 파리미터 개념을 정리 하고자 한다.
함수를 정의 할때
default value parameter를
non-default value parameter 앞에 정의 하면 안 되는 이유
- non default parameter follows default parameter python
파라미터를 정의하는 순서 없이 무작위로 생성 시
함수는 어떤 파라미터에서 어떤 값을 받아야 될지 정할 수 없기 때문
- function 정의 시 지켜야 할 argument 순서
- 1.positional(non-default) arguments
- 2.default arguments
- 3.variable length positional arguments (=*arg)
- 4.keyword-only arguments
- 4-1. non-default keyword-only arguments
- 4-2. default keyword-only arguments
- 5.variable length keyword arguments (=*kwargs)
위치 인수(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)
ERROR ______________________________________________________
Traceback (most recent call last):
File "main.py", line 7, in <module>
func_param_with_var_args("정우성", "01012341234", "seoul", 20)
TypeError: func_param_with_var_args() missing
1 required keyword-only argument: 'age'
____________________________________________________________
정상적으로 출력 됬을 시 결과
# Fiexd Code
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=('01012341234', 'seoul')
age=20
가변 키워드 인수 (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")
ERROR ______________________________________________________
File "main.py", line 1
def func_param_with_kwargs(name, age, **kwargs, address=0):
SyntaxError: invalid syntax
____________________________________________________________
정상적으로 출력 됬을 시 결과
# Fiexd Code
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
위치 인수와 키워드 가변 키워드 인수 (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")
ERROR ______________________________________________________
File "main.py", line 1
def mixed_params(name="아이유", *args, age, **kwargs, address):
SyntaxError: invalid syntax
KeyboardInterrupt
____________________________________________________________
정상적으로 출력 됬을 시 결과
# Fiexd Code
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