파이선의 *args , **kwargs의 사용법

args

가변인자 (Variadic Parameters)

함수로 들어오는 인자의 갯수를 모르는 경우에 사용할수있다


*args : positional arguments

**kwargs : keyword arguments


*args는 tuple형태를 인수로 받는다

**kwargs는 dict형태를 인수로 받는다


예제

def function_example(*args, **kwargs):
    if args:
        print("위치 기반 인자:")
        for arg in args:
            print(arg) # tuple형식
    
    if kwargs:
        print("키워드 인자:")
        for key, value in kwargs.items():
            print(f"{key} = {value}") # dict 형식

# *args를 사용하는 예
function_example('파이썬', '자바', 'C++')

# **kwargs를 사용하는 예
function_example(첫번째='파이썬', 두번째='자바', 세번째='C++')

# *args와 **kwargs를 함께 사용하는 예
function_example('파이썬', '자바', 첫번째='C++', 두번째='C#')


아래와 같은 형태로 사용불가

**kwargs가 먼저오는 형태는 NG

function_example(**kwargs, *args)


아래와 같이 packing되기 때문에 위와 같이 사용할수없다

function_example('파이썬', 첫번째='C++', 두번째='C#')        # 파이선까지 args로 받고 key:value가 시작되는 지점부터 kwargs로 받는다
function_example('파이썬', '자바', 첫번째='C++', 두번째='C#') # 파이선,자바 까지 args로 받고 key:value가 시작되는 지점부터 kwargs로 받는다


왜 이게 궁금했는가?

플라스크의 CORS의 사용법을 찾아보다가 아래의 사용방법을 문서에서 찾았다

class flask_cors.CORS(app=None, **kwargs)

# app은 args로 넘기고 그 이후는 kwargs로 넘겨서 {resource:value}로 받는걸 알수있다

# 실제사용 예제
# CORS(app, resources={r"/*": {"origins": [“http://localhost:8000”]}})



참조한 사이트

Apr 6, 2024 Views 74