W tym artykule omówimy, co ** (podwójna gwiazdka/gwiazdka) i * (gwiazdka/gwiazdka) robią dla parametrów w Pyton , Tutaj również omówimy args i kwargs przykłady w Pythonie. Możemy przekazać zmienną liczbę argumentów do funkcji za pomocą specjalnych symboli.
Istnieją dwa symbole specjalne:
*args i **kwargs w Pythonie
Symbole specjalne używane do przekazywania argumentów w Pythonie:
- *args (argumenty inne niż słowa kluczowe)
- **kwargs (Argumenty słów kluczowych)
Notatka: Używamy symbolu wieloznacznego lub notacji * w ten sposób – *args OR **kwargs – jako argumentu naszej funkcji, gdy mamy wątpliwości co do liczby argumentów, które powinniśmy przekazać w funkcji.
Co to jest Python *args?
Specjalna składnia *argumenty w definicjach funkcji w Pythonie służy do przekazywania zmiennej liczby argumentów do funkcji. Służy do przekazywania listy argumentów o zmiennej długości, nie zawierającej słów kluczowych.
- Składnia polega na użyciu symbolu * do przyjęcia zmiennej liczby argumentów; zgodnie z konwencją często jest używane ze słowem argumenty.
- Co *argumenty pozwala na przyjęcie większej liczby argumentów niż liczba argumentów formalnych, które wcześniej zdefiniowałeś. Z *argumenty , do bieżących parametrów formalnych można dołączyć dowolną liczbę dodatkowych argumentów (w tym zero dodatkowych argumentów).
- Na przykład chcemy utworzyć funkcję mnożenia, która przyjmuje dowolną liczbę argumentów i jest w stanie je wszystkie pomnożyć. Można to zrobić za pomocą *args.
- Używając *, zmienna, którą kojarzymy z *, staje się iterowalna, co oznacza, że możesz na przykład iterować po niej, uruchamiać funkcje wyższego rzędu, takie jak mapowanie i filtrowanie itp.
Przykład 1:
Program w Pythonie ilustrujący *args dla zmiennej liczby argumentów
wskazówki w cpyton
def myFun(*argv): for arg in argv: print(arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>
Wyjście:
Hello Welcome to techcodeview.com>
Przykład 2:
Program w języku Python ilustrujący *args z pierwszym dodatkowym argumentem
Python3 def myFun(arg1, *argv): print('First argument :', arg1) for arg in argv: print('Next argument through *argv :', arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>
Wyjście:
First argument : Hello Next argument through *argv : Welcome Next argument through *argv : to Next argument through *argv : techcodeview.com>
Co to jest Python **kwargs?
Specjalna składnia **kwargs w definicjach funkcji w Pythonie służy do przekazywania listy argumentów o zmiennej długości i zawierającej słowa kluczowe. Używamy nazwy kwargs z podwójną gwiazdą. Powodem jest to, że podwójna gwiazda pozwala nam przechodzić przez argumenty słów kluczowych (i dowolną ich liczbę).
- Argument słowa kluczowego polega na tym, że podajesz nazwę zmiennej podczas przekazywania jej do funkcji.
- Można pomyśleć o kwargs jako słownik, który odwzorowuje każde słowo kluczowe na wartość, którą obok niego przekazujemy. Dlatego, gdy iterujemy po kwargs wydaje się, że nie ma żadnej kolejności, w jakiej zostały wydrukowane.
Przykład 1:
Program w języku Python ilustrujący *kwargs dla zmiennej liczby argumentów słów kluczowych. Tutaj **kwargs akceptuje argument o zmiennej długości ze słowami kluczowymi przekazywany przez wywołanie funkcji. for First=„Geeks” jest kluczem, a „Geeks” to wartość. w prostych słowach to, co przypisujemy, jest wartością i komu przypisujemy, jest kluczowe.
Pyton def myFun(**kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun(first='Geeks', mid='for', last='Geeks')>
Wyjście:
first == Geeks mid == for last == Geeks>
Przykład 2:
Program w języku Python ilustrujący **kwargs dla zmiennej liczby argumentów słów kluczowych z jednym dodatkowym argumentem. Wszystko to samo, ale jedną zmianą jest to, że przekazujemy argument inny niż słowo kluczowe, który można zaakceptować za pomocą argumentu pozycyjnego (arg1 w myFun). a przekazywane przez nas argumenty słów kluczowych są akceptowane przez **kwargs. proste, prawda?
Pyton 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')>
Wyjście:
first == Geeks mid == for last == Geeks>
Używanie zarówno *args, jak i **kwargs w Pythonie do wywołania funkcji
Przykład 1:
Tutaj przekazujemy *args i **kwargs jako argument w funkcji myFun. Przekazanie *args do myFun oznacza po prostu, że przekazujemy argumenty pozycyjne i o zmiennej długości, które są zawarte w args. więc Geekowie przechodzą do arg1, aby przejść do arg2, a Geekowie przechodzą do arg3. Kiedy przekazujemy **kwargs jako argument do funkcji myFun, oznacza to, że akceptuje ona argumenty oparte na słowach kluczowych. Tutaj arg1 jest kluczem, a wartość to Geeks, która jest przekazywana do arg1 i tak po prostu for i Geeks przekazują odpowiednio do arg2 i arg3. Po przekazaniu wszystkich danych drukujemy wszystkie dane w wierszach.
pyton 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)>
Wyjście:
arg1: Geeks arg2: for arg3: Geeks arg1: Geeks arg2: for arg3: Geeks>
Przykład 2:
Tutaj przekazujemy *args i **kwargs jako argument w funkcji myFun. Gdzie „geeki”, „dla”, „geeki” jest przekazywana jako *args i First=Geeks, mid=for, last=Geeks jest przekazywany jako **kwargs i drukowanie w tej samej linii.
pyton 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')>
Wyjście:
args: ('geeks', 'for', 'geeks') kwargs: {'first': 'Geeks', 'mid': 'for', 'last': 'Geeks'}>
Używanie *args i **kwargs w Pythonie do ustawiania wartości obiektu
Przykład 1: użycie Pythona *args
Pyton # 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)>
Wyjście:
red 250>
Przykład 2: użycie Pythona **kwargs
Pyton # 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)>
Wyjście:
red 250>