일정한 작업을 수행하는 코드블럭
def 함수명(parameter):
문장1
문장2
...
문장N
[return 리턴값]
✓ 혼용해서 사용할 때는 Positional arguments의 순서를 지켜주어야 에러가 나지 않는다.
✓ default 값이 정의되지 않은 parameter보다 먼저 위치해 있으면 에러 발생
non-default value parameter일 경우 순서대로 값을 입력받는데 dfault value parameter가 앞에 올 경우 순서가 첫번째인지 두번째인지 정확하게 판단하기 어렵기 때문에 에러가 발생할 수 있어서
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)
def func_param_with_var_args(name, age, *args):
print("name=",end=""), print(name)
print("age=",end=""), print(age)
print("args=",end=""), print(args)
func_param_with_var_args("정우성", 20, "01012341234", "seoul")
순서대로 입력받아야 하는 non-default parameter가 있는 경우를 고려하여 가변 인자를 맨 뒤에 작성해보았다.
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")
뒤로 옮겼더니 실행됨.
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")
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")
자꾸 오류가 나서 구글링해봤더니 keyword only arguments가 키워드 가변 인자 앞에 위치해야 한다고 해서 위치를 옮겨봤지만 실행되지 않았다. replit에서는 실행되지만 python IDLE에선 실행되지 않는다. 잘모르겠다.