[Python]Function Parameters(2)
variable length arguments
매개변수 이름 앞에 *을 붙이면 입력값을 전부 모아서 튜플로 만들어 주기 때문에 여러 개의 입력값을 받을 수 있다.
def example(num1, num2, *args)
print(num1)
print(num2)
print(args)
example(1, 6, 3, 4, 5)
위와 같이 함수를 호출하면 num1, num2에는 각각 1과 6이 전달되고,
*args라는 Parameter는 3, 4, 5를 튜플 형태로 전달받는다.
위와 같은 코드를 실행하면 오류가 발생한다.
"정우성"은 name에 전달된다.
나머지 3개의 인수가 모두 *args에 전달되면 age에 할당되는 인수가 없다.
즉, 파이썬은 어디부터 어디까지가 *args에 전달되어야 하는 인수인지 파악할 수 없기 때문에 오류가 발생하는 것이다.
이 문제를 해결하려면 1)*args를 parameter의 마지막에 위치시키거나
20을 keword argument로 바꿔주면 된다.
1) 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")
#age의 위치가 바뀌었으니 20의 위치도 옮겨준다.
2)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", age = 20)
위처럼 코드를 수정하면 다음과 같은 결과가 출력된다.
name=정우성
args=('01012341234', 'seoul')
age=20
위 코드 역시 오류가 발생한다.
parameter와 인수의 순서를 바꿔주고,
20에 keyword를 지정해주니 오류가 해결된다.
def mixed_params(name="아이유", *args, age, 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("정우성", "01012341234", "male" , age = 20, mobile="01012341234", address="seoul")
#출력
name=정우성
args=('01012341234', 'male')
age=20
kwargs={'mobile': '01012341234'}
address=seoul
Author And Source
이 문제에 관하여([Python]Function Parameters(2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ulr0xb/PythonFunction-Parameters2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)