가변인자 args, kwargs

2020. 12. 9. 09:52·[Language] - Python

개요


 

Python 프로그래밍을 하다보면 함수에 정해진 파라미터 외에도 동적으로 인자를 전달해야 하는 경우가 발생한다. 이러한 인자를 가변(可變)인자라고 하는데, 가능할 가(可) 변할 변(變)을 의미한다. 쉽게 말해, 런타임 도중 정해진 갯수만큼의 인자가 넘어가는 것이 아닌 로직에 따라 변할 수 있는 길이의 인자가 함수의 파라미터로 전달되는 것을 의미한다. Python에서 지원하는 가변인자의 종류는 크게 2종류이다.

  • args : arguments, 인자의 iterables만 전달되는 형태
  • kwargs : keyword arguments, 인자의 매개변수명과 인자가 딕셔너리의 키-밸류로 구성되어 전달되는 형태

 


 

args


def arg_func(*args):
    for idx, arg in enumerate(args):
        print(idx, arg)
        
if __name__ == '__main__':
    # 인자에 직접 입력
    arg_func(10, 20, 'a')
    
    # 리스트로 입력
    l = [10, 20, 'a']
    arg_func(*l)
  • arg_func(10, 20, 'a')를 호출하게 되면 *args인자에는 10, 20, 'a'가 담긴 리스트가 전달된다. 고로 인자에 직접 입력해주어도 되지만 리스트를 통째로 보내도 된다. 리스트의 길이는 상관없다.

 


 

kwargs


def kwarg_func(**kwargs):
    for item in kwargs.item():
        print(item)
        
if __name__ == '__main__':
    kwarg_func(x=10, y=20, z='a')
    
    d = {'x': 10, 'y': 20, 'z': 'a'}
    kwarg_func(**d)
  • kwargs_func(x=10, y=20, z='a')를 호출하게 되면 **kwargs에는 키(워드)값이 x, y, z인 딕셔너리가 전달된다. *arg와 마찬가지로 길이는 상관없다.

'[Language] - Python' 카테고리의 다른 글

덕 타이핑 (Duck Typing)  (2) 2020.12.29
추상 베이스 클래스 (Abstract Base Class)  (0) 2020.12.28
pickle 모듈  (0) 2020.12.18
접근제한자 (Access Modifier)  (0) 2020.12.14
정적 메소드 staticmethod, classmethod, instancemethod  (0) 2020.12.09
'[Language] - Python' 카테고리의 다른 글
  • 추상 베이스 클래스 (Abstract Base Class)
  • pickle 모듈
  • 접근제한자 (Access Modifier)
  • 정적 메소드 staticmethod, classmethod, instancemethod
Bebsae
Bebsae
  • Bebsae
    뱁새zip
    Bebsae
  • 전체
    오늘
    어제
    • 분류 전체보기 (108)
      • [DevOps] - Kubernetes (5)
      • [DevOps] - AWS (1)
      • [AI] - Machine Learning (19)
      • [AI] - Neural Network (7)
      • [CS] - Network (2)
      • [CS] - Data Structure (3)
      • [CS] - Design Pattern (6)
      • [Language] - Python (15)
      • [Library] - Numpy (7)
        • Quick Start (5)
        • API (2)
      • [Framework] - Django (3)
      • [Framework] - QGIS (6)
      • [Framework] - PyQT (4)
      • [Mathematics] - Linear Alge.. (14)
      • [Mathematics] - Statistical (2)
      • [ETC] - Python (3)
      • [ETC] - C++ (1)
      • [ETC] - Linux (1)
      • 논문 (5)
      • 회고록 (3)
      • 생산성 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    numpy
    Python
    Linear
    linearalgebra
    MachineLearning
    algebra
    RNN
    Convolution
    디자인패턴
    파이썬
    신경망
    decomposition
    교차검증
    선형대수
    Machine
    DEEPLEARNING
    Learning
    분해
    QGIS
    머신러닝
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Bebsae
가변인자 args, kwargs
상단으로

티스토리툴바