[python] *args , **kwargs

2021. 7. 19. 23:12Python

728x90

- *args

*arguments의 줄임말. = 꼭 이렇게 쓸 필요는 없다. *a, *names등등 다 가능

여러개의 인자를 받고자 할 때 쓰임

일반 변수보다는 뒤에 위치하도록 해야함. 그렇지 않으면 오류가 난다.

 

ex. 학생 이름들을 인자로 받고 싶어요!

def print_names(*names):
    for name in names:
        print(name)
    print('names: ', names, 'type:', type(names))


if __name__ == '__main__':
    print_names('홍길동', '김철수')

여러 인자가 튜플 형태로 들어와서 출력된다!

 

- **kwargs

keyword argument의 줄임말

키워드 = 특정값 형태로 함수호출 가능

이렇게 들어온 인자는 딕셔너리 형태로 {'키워드' : '특정값'} 이렇게 함수 내부로 전달

ex.

def introduce_my_name(**kwargs):
    for key, value in kwargs.items():
        print(f"{key} is {value}")

    print('---------------')
    print(kwargs)

if __name__ == '__main__':
    introduce_my_name(name='chang', age=24, job='student')

 

 

일반변수, *변수, **변수 순으로 써줘야 한다

*변수 = 여러개가 arguments로 들어오면 함수 내부에서 해당 변수를 튜플로 처리

**변수 = 키워드=''로 입력할 경우 그것을 각각 키와 값으로 가져오는 딕셔너리로 처리

 

728x90

'Python' 카테고리의 다른 글

[Python] __call__함수  (0) 2021.07.26
hasattr(object, name) / getattr(object, name) / setattr(object, name)  (0) 2021.06.15
class 이름/ class 변수 참조  (0) 2021.06.15
__getitem__  (0) 2021.05.21
Python argparse  (0) 2021.05.09