가변인자 (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 96