Šajā rakstā mēs apskatīsim, ko ** (dubultzvaigzne/zvaigznīte) un * (zvaigznīte/zvaigznīte) dara parametriem Python , Šeit mēs arī aptversim args un kwargs piemēri Python. Izmantojot īpašus simbolus, funkcijai varam nodot mainīgu argumentu skaitu.
Ir divi īpašie simboli:
*args un **kwargs Python valodā
Īpaši simboli, ko izmanto argumentu nodošanai Python:
masīva c virkne
- *args (ar atslēgvārdiem nesaistīti argumenti)
- **kwargs (atslēgvārdu argumenti)
Piezīme: Mēs izmantojam aizstājējzīmi vai * apzīmējumu šādi — *args VAI **kwargs — kā savas funkcijas argumentu, ja mums ir šaubas par argumentu skaitu, kas jānodod funkcijā.
Kas ir Python *args?
Īpašā sintakse *args funkciju definīcijās Python izmanto, lai funkcijai nodotu mainīgu argumentu skaitu. To izmanto, lai nodotu mainīga garuma argumentu sarakstu bez atslēgvārdiem.
- Sintakse ir izmantot simbolu *, lai uzņemtu mainīgu argumentu skaitu; pēc vienošanās to bieži lieto kopā ar vārdu args.
- Kas *args ļauj jums izmantot vairāk argumentu nekā iepriekš definēto formālo argumentu skaits. Ar *args , jūsu pašreizējiem formālajiem parametriem var pievienot jebkuru papildu argumentu skaitu (tostarp nulles papildu argumentu).
- Piemēram, mēs vēlamies izveidot reizināšanas funkciju, kas ņem jebkuru argumentu skaitu un spēj tos visus reizināt kopā. To var izdarīt, izmantojot *args.
- Izmantojot *, mainīgais, ko saistām ar *, kļūst par atkārtojamu, kas nozīmē, ka varat veikt tādas darbības kā atkārtošana, palaist dažas augstākas kārtas funkcijas, piemēram, karti un filtru utt.
1. piemērs:
Python programma, lai ilustrētu *args mainīgam argumentu skaitam
pitons
def myFun(*argv): for arg in argv: print(arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>
Izvade:
Hello Welcome to techcodeview.com>
2. piemērs:
Python programma, lai ilustrētu *args ar pirmo papildu argumentu
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')>
Izvade:
dzirksteles apmācība
First argument : Hello Next argument through *argv : Welcome Next argument through *argv : to Next argument through *argv : techcodeview.com>
Kas ir Python ** kwargs?
Īpašā sintakse **kwargs funkciju definīcijās Python izmanto, lai nodotu atslēgvārdu mainīga garuma argumentu sarakstu. Mēs izmantojam nosaukumu kwargs ar dubultzvaigzni. Iemesls ir tāds, ka dubultzvaigzne ļauj mums iziet cauri atslēgvārdu argumentiem (un jebkuram to skaitam).
- Atslēgvārda arguments ir vieta, kur jūs piešķirat mainīgajam nosaukumu, kad to nododat funkcijai.
- Var domāt par kwargs kā vārdnīcu, kas kartē katru atslēgvārdu ar vērtību, ko mēs nododam tam blakus. Tāpēc, atkārtojot kwargs Šķiet, ka nav nekādas secības, kādā tie tika izdrukāti.
1. piemērs:
Python programma, lai ilustrētu *kwargs mainīgam atslēgvārdu argumentu skaitam. Šeit **kwargs pieņem atslēgvārdu mainīga garuma argumentu, ko nodod funkcijas izsaukums. for first = “Geeks” pirmais ir galvenais un “Geeks” ir vērtība. vienkāršiem vārdiem sakot, tas, ko mēs piešķiram, ir vērtība, un tas, kam mēs piešķiram, ir galvenais.
Python def myFun(**kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun(first='Geeks', mid='for', last='Geeks')>
Izvade:
first == Geeks mid == for last == Geeks>
2. piemērs:
Python programma, lai ilustrētu **kwargs mainīgam atslēgvārdu argumentu skaitam ar vienu papildu argumentu. Tas pats, bet viena izmaiņa ir tāda, ka mēs nododam argumentu, kas nav atslēgvārds, kas ir pieņemams ar pozicionālo argumentu (arg1 programmā myFun). un atslēgvārdu argumenti, kurus mēs nododam, ir pieņemami **kwargs. vienkārši vai ne?
Python 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')>
Izvade:
first == Geeks mid == for last == Geeks>
Funkcijas izsaukšanai izmantojiet gan *args, gan **kwargs Python
1. piemērs:
Šeit mēs nododam *args un **kwargs kā argumentu funkcijā myFun. *args nodošana programmai myFun vienkārši nozīmē, ka mēs nododam pozicionālos un mainīga garuma argumentus, kurus satur args. tātad, Geeks pāriet uz arg1, lai pārietu uz arg2, un Geeks pāriet uz arg3. Ja mēs nododam **kwargs kā argumentu myFun, tas nozīmē, ka tas pieņem atslēgvārdu argumentus. Šeit arg1 ir atslēga, un vērtība ir Geeks, kas tiek nodota arg1, un tāpat kā un Geeks pāriet attiecīgi uz arg2 un arg3. Pēc visu datu nodošanas mēs visus datus izdrukājam rindās.
sarakstu metodes javapitons
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)>
Izvade:
arg1: Geeks arg2: for arg3: Geeks arg1: Geeks arg2: for arg3: Geeks>
2. piemērs:
Šeit mēs nododam *args un **kwargs kā argumentu funkcijā myFun. kur 'geeks', 'par', 'geeks' tiek nodots kā *args, un pirmais = gudrinieki, vidējais = priekš, pēdējais = gudrinieki tiek nodots kā ** kwargs un drukāšana tajā pašā rindā.
divkārši saistīts sarakstspitons
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')>
Izvade:
args: ('geeks', 'for', 'geeks') kwargs: {'first': 'Geeks', 'mid': 'for', 'last': 'Geeks'}>
*args un **kwargs izmantošana Python, lai iestatītu objekta vērtības
1. piemērs: izmantojot Python *args
Python # 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)>
Izvade:
red 250>
2. piemērs: izmantojot Python **kwargs
Python # 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)>
Izvade:
red 250>