Function Parameters
1. 함수를 정의 할때 default value parameter
를 non-default value parameter
앞에 정의 하면 안 되는 이유에 대해 생각해보시고 블로깅 해주세요.
[정답]
default value parameter
를 non-default value parameter
앞에 선언하면 syntax error
발생
def love_you(my_name = "정우성", your_name):
print(f"{my_name} loves {your_name}")
`
love_you("정우성")
`
Traceback (most recent call last):
File "python", line 1
SyntaxError: non-default argument follows default argument
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)
- 주어진 함수 입력 시
syntax error
발생
Traceback (most recent call last):
File "/Users/shinisgood/Documents/1.py", line 6, in <module>
func_param_with_var_args("정우성", "01012341234", "seoul", 20)
TypeError: func_param_with_var_args() missing 1 required keyword-only argument: 'age'
[정답]
*args
는 정해지지 않은 수의 parameter
를 받는다.
- 그렇기 때문에,
*args
는 맨 마지막에 위치해야한다.
def func_param_with_var_args(name, age, *args): # "*args" 는 중간에 위치하면 에러가 나기 때문에 맨뒤로 옮겨주고
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("age=",end=""), print(age)
`
func_param_with_var_args("정우성", 20, "01012341234", "seoul") # "*args"에 맞춰 인수 위치 또한 바꿔준다.
name=정우성
args=('01012341234', 'seoul')
age=20
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")
- 주어진 함수 입력 시
syntax error
발생
[정답]
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
[설명]
def func(
1. Regular Positional Arguments, # age - 20
2. Default Arguments, # name="아이유"
3. Variable Length Positional Arguments, # *args - "정우 성", "01012341234", "male"
4. Keyword-only Argument or Keyword-only Argument with default, # address - address="seoul"
5. Variable Length Keyword Arguments ) # **kwargs - mobile="01012341234"