TIL 위치 인수, 가변 인수, 가변 키워드 인수

2475 단어 WeCodeWeCode

위치인수, 가변인수, 키워드 인수는 무엇인가?

위치인수

아래와 같이 함수에 인수를 순서대로 넣는 방식을 말한다.

print(10,20,30)

10,20,30

가변인수

함수에 인수의 개수가 정해져 있지 않은 방식을 말한다.

  • 함수 내에서 튜플(tuple) 로 제공된다.
  • 하나의 함수 내에서 최대 하나만 존재할 수 있다.
    오류 : def example(a, *b, *c):
  • 가변인수에 값이 전달되지 않아도 된다.
  • 기본값을 지정해줄 수 없다.

오류 예시)


가변인수 args 뒤에 지정된 age 요소는 아래에 나와있는 키워드 전용인수로, 키워드를 입력하지 않아서 오류가 발생한다. age에 값을 지정해주면 정상 출력된다.

▶ 신기했던 점은 위치기반에서는 디폴드 값을 반드시 마지막 위치에 지정해주어야 했지만 키워드 전용인수는 위치 기반이 아니기 때문에 디폴드값을 아무 위치에 지정해주어도 된다는 점이었다.

키워드 전용인수

함수에 인수의 개수가 정해져 있지 않고 위치 기반으로 지정되지 않는 방식을 말한다.

  • 위치인수와 혼합해서 사용할수 있지만, 반드시 위치인수 뒤에 지정되어야 한다.
  • 가변인수로 지정된 인수 뒤에는 모두 키워드 전용인수가 된다.
  • 기본 값을 지정해도 되고, 지정하지 않아도 된다.
  • 위치인수와 다르게 순서는 상관 없다.
  • 위의 예제에서 가변 인수 뒤에 나온 f에는 꼭 변수를 지정해주어야 한다.

가변키워드 전용인수

위에서 봤던 키워드 전용인수를 가변인수로 설정한 것을 말한다.

  • 가변인수처럼 앞에 ** 을 붙여서 사용하며 가변인수가 뒤에올수 없다.
    a, b, **d, *c는 불가능
  • 딕셔너리 형태로 제공된다.
  • 키워드 전용인수가 뒤에 올 수 없다.

오류 예시)

  • 키워드인수 address 가 뒤에 올 수 없기 때문에 순서를 바꿔주어야 정상 출력이 된다.

오류 예시2)

  • age는 위치 인수로 순서에 맞게 위치시킨다.
  • name 디폴트 값은 위치인수의 마지막에 위치시킨다.
  • address는 키워드인수로 가변인수 args 뒤에 위치시킨다.
  • 가변키워드인수 kwargs 는 키워드 인수 address 뒤에 위치시킨다.

좋은 웹페이지 즐겨찾기