이것은 파이썬에서 무엇을 의미합니까: *args, **kwargs?
10623 단어 machinelearningpythondjangoflask
def args_kwargs(*args, **kwargs):
pass
Python *args 및 **kwargs 인수는 어디에나 있습니다. 가장 인기 있는 Python 프레임워크(Django) 중 하나의 소스 코드에서 찾을 수 있습니다.
변수 *args 및 **kwargs는 어떤 형식으로든 작성할 수 있습니다. 예: *vars 및 **kvars도 유효합니다. *(별표)만 필요합니다.
이번 강의에서는 그것들이 무엇인지, 어떻게 사용하는지 설명하겠습니다 😎.
함수 정의에서 *args 사용:
*args는 함수 정의에서 사용할 수 있습니다. 사용자가 여러 변수 인수를 사용하여 함수를 호출할 수 있습니다. 여기서 변수는 사용자가 함수에 전달할 인수의 수를 미리 알지 못함을 의미하므로 이 경우 *args 키워드를 사용합니다. *args를 사용하면 이전에 정의한 형식 인수 수보다 더 많은 인수를 사용할 수 있습니다. 내부적으로 튜플 데이터 구조를 사용하여 표현됩니다.
가변 인수 수 앞에 0개 이상의 일반 인수가 발생할 수 있습니다.
*args 사용에 대한 흥미로운 예:
def positions(first_arg, *args):
print(f"Type of *args is {type(args)}") #print type of args
print(f"first position arg:{first_arg}")
for arg in args:
print(f"another arg through *args: {arg}")
positions('first','second','third','forth')
#results
Type of *args is <class 'tuple'>
first position arg:first
another arg through *args: second
another arg through *args: third
another arg through *args: forth
함수 정의에서 **kwargs 사용:
함수 정의의 특수 구문 **kwargs는 키워드가 있는 가변 길이 인수 목록을 전달하는 데 사용됩니다.
**kwargs를 사용하면 키워드가 지정된 가변 길이 인수를 함수에 전달할 수 있습니다. 내부적으로는 사전 데이터 구조를 사용하여 표현됩니다.
다음은 이 개념을 설명하는 기본 예입니다.
def items(**kwargs):
print(f"Type of **kwargs is {type(kwargs)}") #print type of **kwargs
#iterating over the keyword argument
if kwargs is not None:
for key, value in kwargs.items():
print(f"{key} = {value}")
items(a="basket", b="plate", c="soap")
#results
Type of **kwargs is <class 'dict'>
a = basket
b = plate
c = soap
위의 예에서 *args 및 *kwargs를 사용하면 함수 정의에 무제한의 인수를 수용할 수 있는 유연성이 있음을 알 수 있습니다.
함수를 호출할 때 **args** 및 **kwargs를 사용하는 몇 가지 예를 살펴보겠습니다.
*args는 Python의 반복 가능한 객체(목록, 튜플)에서 값을 압축 해제하는 데 사용할 수 있습니다.
def test_args_kwargs(arg1,arg2,arg3):
print(f"{arg1},{arg2},{arg3}")
#using tuple
test_args_kwargs(*('first','second','third'))
#OR
test_args_kwargs(*['first','second','third'])
#results
first,second,third #unpacking tuple
first,second,third #unpacking list
**kwargs는 사전 압축을 푸는 데에만 사용할 수 있습니다.
# now with **kwargs:
kwargs = {"arg1": "first", "arg2": "second","arg3":"third"}
test_args_kwargs(**kwargs)
#results
arg1: first
arg2: second
arg3: third
*args **kwargs 및 formal args 사용 순서
매개변수의 올바른 순서는 다음과 같습니다.
표준 인수
*args 인수
**kwargs 인수
다양한 유형의 매개변수를 결합하는 방법을 살펴보겠습니다.
#right
def my_func(args, *args, **kwargs):
pass
#wrong
def my_func(args, **kwargs, *args):
pass
보너스
*를 사용하여 할당 중에 값을 수집할 수도 있습니다.
first,*others = ["first","second","third"]
print(first,others, sep="\n")
#results
first
['second', 'third']
이제 Python에서 함수를 정의하거나 호출할 때 *args 및 **kwargs를 사용하는 방법을 명확하게 이해하셨기를 바랍니다.
질문이 있으시면 아래에 의견을 남겨주세요.
다음 주에는 멀티스레딩과 멀티프로세싱을 사용하여 프로그램 속도를 높이는 방법을 설명하겠습니다. :) 저를 팔로우하고 알림을 켜주세요. 고맙습니다!
즐거운 코딩! ✌
Reference
이 문제에 관하여(이것은 파이썬에서 무엇을 의미합니까: *args, **kwargs?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mojemoron/what-does-this-mean-args-kwargs-in-python-2d9e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)