위치인수와 가변인수

97woo·2022년 2월 3일
0

위치인수와 가변인수

일단 위치인수와 가변인수 먼저 정리하고 가자.

1.위치인수

위치인수(positional argument): 위치 인수란 함수를 호출할 때 전달되는 값이 매개변수에
순서대로 전달되는 인수를 의미하며 우리가 일반적으로 사용하는 방식이다.

def number(a,b,c):
 	print(a,b,c)
number(1,2,3)

위와 같이 1,2,3이 a,b,c에 전달됨을 알 수있습니다.

2.가변인수

가변인수(variable argrment): 가변인수란 인수의 개수가 변할 수 있다는 의미이다
우리가 알아야될 것은 가변인수를 전달받는 함수인데
함수 호출시 인수의 개수를 다양하게 바꿔가며 사용할 수 있다.

def find_sum(*args):
    sum = 0
    for i in args:
        sum += i
    print('sum: {0}'.format(sum))
    find_sum()    # 인수를 전달하지 않는다, 출력: 0
	find_sum(1, 2, 3)    # 출력: 6
	find_sum(1, 2, 3, 4, 5)    # 출력: 15

위 처럼 값을 인수의 개수를 다양하게 바꿔가며 전달이 가능합니다.

3.문제(1)

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)

위와 같이 에러가 난다 에러를 해석해보면 age가 파라미터 값을 전달받지 못했다고 에러가 뜬다

가변인수 때문에 위치인수인 age가 재대로 인식하지못해서 호출되지 않은 에러였는데
키워드 인수로 정확하게 age=26 으로 지정해주니 잘 호출 되는 모습이다.

3.문제(2)

아마 가변키보드인수가 중간에 있어서 그런것 같다 가변키보드인수를 제일 뒤로 바꿔보자


잘 출력된다.

3.문제(3)

이 번 문제는 일단 Default Value Parameter 부터 non-default value parameter로 옴기고
age를 제일 앞으로 그 다음 키워드 인수인 address는 가변 인수보다는 뒤이고 가변 키워드 인수보다는 앞에 위치해야 하니깐 순서를 바꾸주고 실행하면?

잘 출력되는 모습이다.정리를 해보자면 위치인수가 항상 앞에 존재해야하며 그 다음 가변인수, 그 다음 키워드 인수,그 다음 가변 키워드 인수를 사용하여 실행시 잘 출력되었다

  1. 앞에서부터 순서대로 지정되는 위치 인자
  2. 기본값이 정해져있는 매개 변수
  3. 가변 인수(*arg) (예 - list, tuple)
  4. 키워드 인수
    4-1. 기본값이 정해지지 않은 키워드 인수
    4-2. 기본값이 정해져있는 키워드 인수이며 *(asterisk) 뒤에 오는지로 2번과 구분
  5. 가변 키워드 인수(**kwargs) (예 - dictionary)

전 포스팅에 올려놨엇던 예시이다 우선사항을 지키면서 에러없이 코딩하면 좋을듯 하다

profile
한 발씩 나아가는중

0개의 댓글