본문 바로가기
Python/Basic

Python에서의 *args 와 **kwargs

by 하람 Haram 2023. 4. 4.
728x90

처음에는 포인터 인줄 알고 쫄았지만 Python에서는 포인터의 개념으로 사용되지는 않는다

 

 

*args

*args는 arguments 의 줄인 말이고 통상적으로 *arg를 많이 사용하지만

굳이 변수명을 arg를 할 필요는 없다

 

*args 는 여러개의 인자를 함수로 받고자 할 때 사용한다

 

def myclass(*students):
    print(students)
    print("The first student name is : ", students[0])
    print("The last student name is : ", students[-1])


myclass('철수','영희','바둑이')

>>> ('철수', '영희', '바둑이')
>>> The first student name is :  철수
>>> The last student name is :  바둑이

이런 식으로 입력값이 몇개가 들어올지 모를 때 사용하고

 

저장되는 방식은 argument에 Tuple 형식으로 저장이 된다

 

 

 

*kwargs

kwargs 는 keyword argument의 줄인 말로

키워드 = 특정 값 형태로 함수를 호출 할 수 있다

마찬가지로 굳이 kwargs를 사용할 필요는 없지만

arg 와 kwargs 사용하는 것이 일반적이므로 추천한다

 

def myclass(**kwargs):
    print(kwargs)
    for number, name in kwargs.items():
        print("학번 : 2023{1} , 학생이름 : {0} ".format(number,name))

myclass(홍길동="1111",철수 = '2222',바둑이 = '3333')


>>> {'홍길동': '1111', '철수': '2222', '바둑이': '3333'}
>>> 학번 : 20231111 , 학생이름 : 홍길동 
>>> 학번 : 20232222 , 학생이름 : 철수 
>>> 학번 : 20233333 , 학생이름 : 바둑이

 

 

이 두개를 같이 쓴다면 다음과 같은 것을 자유롭게 할 수 있다

def myclass(*arg,**kwargs):
    print(arg[0])
    for number, name in kwargs.items():
        print("학번 : 2023{1} , 학생이름 : {0} ".format(number,name))

myclass("우리 반 아이들을 소개합니다 ",홍길동="1111",철수 = '2222',바둑이 = '3333')

 

728x90