logo

Python의 *args 및 **kwargs

이 기사에서는 **(이중 별표/별표) 및 *(별표/별표)가 매개변수에 대해 수행하는 작업에 대해 설명합니다. 파이썬 , 여기서도 다룰 것입니다 Python의 args 및 kwargs 예제. 특수 기호를 사용하여 함수에 다양한 개수의 인수를 전달할 수 있습니다.

두 가지 특수 기호가 있습니다.



Python의 *args 및 **kwargs

Python에서 인수를 전달하는 데 사용되는 특수 기호:

  • *args(키워드가 아닌 인수)
  • **kwargs(키워드 인수)

메모: 함수에 전달해야 하는 인수의 개수가 의심스러울 때 *args 또는 **kwargs와 같은 와일드카드나 * 표기법을 함수의 인수로 사용합니다.



Python *args란 무엇입니까?

특수 구문 *인수 Python의 함수 정의에서는 가변 개수의 인수를 함수에 전달하는 데 사용됩니다. 키워드가 없는 가변 길이 인수 목록을 전달하는 데 사용됩니다.

  • 구문은 * 기호를 사용하여 가변 개수의 인수를 받아들이는 것입니다. 관례적으로 args라는 단어와 함께 사용되는 경우가 많습니다.
  • 무엇 *인수 이전에 정의한 공식 인수 수보다 더 많은 인수를 사용할 수 있습니다. 와 함께 *인수 , 현재 형식 매개변수에 추가 인수를 원하는 만큼 추가할 수 있습니다(0개의 추가 인수 포함).
  • 예를 들어, 우리는 임의 개수의 인수를 취하고 이를 모두 함께 곱할 수 있는 곱하기 함수를 만들고 싶습니다. *args를 사용하여 수행할 수 있습니다.
  • *를 사용하면 *와 연결하는 변수가 반복 가능해집니다. 즉, 반복, 맵 및 필터와 같은 일부 고차 기능 실행 등의 작업을 수행할 수 있습니다.

예시 1:

가변 개수의 인수에 대한 *args를 설명하는 Python 프로그램



파이썬
def myFun(*argv): for arg in argv: print(arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>

산출:

Hello Welcome to techcodeview.com>

예시 2:

첫 번째 추가 인수가 있는 *args를 설명하는 Python 프로그램

SDLC
파이썬3
def myFun(arg1, *argv): print('First argument :', arg1) for arg in argv: print('Next argument through *argv :', arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>

산출:

First argument : Hello Next argument through *argv : Welcome Next argument through *argv : to Next argument through *argv : techcodeview.com>

Python **kwargs란 무엇입니까?

특수 구문 **크와르그 Python의 함수 정의에서는 키워드가 있는 가변 길이 인수 목록을 전달하는 데 사용됩니다. 우리는 그 이름을 사용합니다. 크와그스 이중 별과 함께. 그 이유는 이중 별표를 사용하면 키워드 인수(및 그 수에 제한 없음)를 전달할 수 있기 때문입니다.

  • 키워드 인수는 변수를 함수에 전달할 때 변수에 이름을 제공하는 곳입니다.
  • 다음과 같이 생각할 수 있습니다. 크와그스 각 키워드를 우리가 함께 전달하는 값에 매핑하는 사전입니다. 그렇기 때문에 우리가 크와그스 인쇄된 순서는 없는 것 같습니다.

예시 1:

다양한 수의 키워드 인수에 대한 *kwargs를 설명하는 Python 프로그램입니다. 여기서 **kwargs는 함수 호출에 의해 전달된 키워드 가변 길이 인수를 허용합니다. for first='Geeks' 첫 번째가 키이고 'Geeks'가 값입니다. 간단히 말해서 우리가 할당하는 것이 가치이고 누구에게 할당하는가가 핵심입니다.

파이썬
def myFun(**kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun(first='Geeks', mid='for', last='Geeks')>

산출:

first == Geeks mid == for last == Geeks>

예시 2:

하나의 추가 인수를 사용하여 가변 개수의 키워드 인수에 대한 **kwargs를 설명하는 Python 프로그램입니다. 모두 동일하지만 한 가지 변경 사항은 위치 인수(myFun의 arg1)에서 허용되는 키워드가 아닌 인수를 전달한다는 것입니다. 우리가 전달하는 키워드 인수는 **kwargs에서 허용됩니다. 간단하죠?

파이썬
def myFun(arg1, **kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun('Hi', first='Geeks', mid='for', last='Geeks')>

산출:

first == Geeks mid == for last == Geeks>

Python에서 *args와 **kwargs를 모두 사용하여 함수 호출

예시 1:

여기서는 *args 및 **kwargs를 myFun 함수의 인수로 전달합니다. *args를 myFun에 전달한다는 것은 단순히 args에 포함된 위치 및 가변 길이 인수를 전달한다는 의미입니다. 따라서 Geeks는 arg2로 전달하기 위해 arg1로 전달하고 Geeks는 arg3으로 전달합니다. myFun에 **kwargs를 인수로 전달하면 키워드 인수를 허용한다는 의미입니다. 여기서 arg1은 키이고 값은 arg1에 전달되는 Geeks입니다. for와 Geeks는 각각 arg2와 arg3에 전달됩니다. 모든 데이터를 전달한 후 모든 데이터를 한 줄로 인쇄합니다.

파이썬
def myFun(arg1, arg2, arg3): print('arg1:', arg1) print('arg2:', arg2) print('arg3:', arg3) # Now we can use *args or **kwargs to # pass arguments to this function : args = ('Geeks', 'for', 'Geeks') myFun(*args) kwargs = {'arg1': 'Geeks', 'arg2': 'for', 'arg3': 'Geeks'} myFun(**kwargs)>

산출:

arg1: Geeks arg2: for arg3: Geeks arg1: Geeks arg2: for arg3: Geeks>

예시 2:

빈 자바

여기서는 *args 및 **kwargs를 myFun 함수의 인수로 전달합니다. 어디 '괴짜', 'for', '괴짜' *args로 전달되며, first=긱스, mid=for, 마지막=긱스 **kwargs 및 인쇄로 전달됩니다. 같은 줄에.

파이썬
def myFun(*args, **kwargs): print('args: ', args) print('kwargs: ', kwargs) # Now we can use both *args ,**kwargs # to pass arguments to this function : myFun('geeks', 'for', 'geeks', first='Geeks', mid='for', last='Geeks')>

산출:

args: ('geeks', 'for', 'geeks') kwargs: {'first': 'Geeks', 'mid': 'for', 'last': 'Geeks'}>

Python에서 *args 및 **kwargs를 사용하여 객체 값 설정

  • *args는 인수를 다음과 같이 받습니다. 튜플 .
  • **kwargs는 인수를 다음과 같이 받습니다. 사전 .

예시 1: Python *args 사용

파이썬
# defining car class class Car(): # args receives unlimited no. of arguments as an array def __init__(self, *args): # access args index like array does self.speed = args[0] self.color = args[1] # creating objects of car class audi = Car(200, 'red') bmw = Car(250, 'black') mb = Car(190, 'white') # printing the color and speed of the cars print(audi.color) print(bmw.speed)>

산출:

red 250>

예시 2: Python **kwargs 사용

파이썬
# defining car class class Car(): # args receives unlimited no. of arguments as an array def __init__(self, **kwargs): # access args index like array does self.speed = kwargs['s'] self.color = kwargs['c'] # creating objects of car class audi = Car(s=200, c='red') bmw = Car(s=250, c='black') mb = Car(s=190, c='white') # printing the color and speed of cars print(audi.color) print(bmw.speed)>

산출:

red 250>