logo

*args ir **kwargs Python

Šiame straipsnyje apžvelgsime, ką ** (dviguba žvaigždutė / žvaigždutė) ir * (žvaigždutė / žvaigždutė) daro parametrams Python , Čia mes taip pat apimsime args ir kwargs pavyzdžiai Python. Naudodami specialius simbolius funkcijai galime perduoti kintamą argumentų skaičių.

Yra du specialūs simboliai:

*args ir **kwargs Python



Specialūs simboliai, naudojami argumentams perduoti Python:

  • *args (ne raktinio žodžio argumentai)
  • **kwargs (raktinių žodžių argumentai)

Pastaba: Mes naudojame pakaitos simbolį arba * žymėjimą, kaip šis – *args OR **kwargs – kaip savo funkcijos argumentą, kai abejojame, kiek argumentų turime perduoti funkcijoje.

Kas yra Python *args?

Speciali sintaksė *args Funkcijos apibrėžimuose Python naudojamas kintamam argumentų skaičiui perduoti funkcijai. Jis naudojamas kintamo ilgio argumentų sąrašui perduoti be raktinių žodžių.

  • Sintaksė yra naudoti simbolį *, norint priimti kintamą argumentų skaičių; pagal susitarimą jis dažnai vartojamas su žodžiu args.
  • *args Tai leidžia jums priimti daugiau argumentų nei anksčiau apibrėžtų formalių argumentų. Su *args , prie dabartinių formalių parametrų galima priskirti bet kokį papildomų argumentų skaičių (įskaitant nulį papildomų argumentų).
  • Pavyzdžiui, norime sukurti daugybos funkciją, kuri paimtų bet kokį argumentų skaičių ir galėtų padauginti juos visus kartu. Tai galima padaryti naudojant *args.
  • Naudojant *, kintamasis, kurį susiejame su *, tampa kartojamas, o tai reiškia, kad galite atlikti tokius veiksmus, kaip jį kartoti, paleisti kai kurias aukštesnės eilės funkcijas, pvz., žemėlapį ir filtrą ir pan.

1 pavyzdys:

Python programa, skirta iliustruoti *args kintamam argumentų skaičiui

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

Išvestis:

Hello Welcome to techcodeview.com>

2 pavyzdys:

Python programa, skirta iliustruoti *args su pirmuoju papildomu 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')>

Išvestis:

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

Kas yra Python **kwargs?

Speciali sintaksė **kwargs Funkcijos apibrėžimuose Python naudojamas perduoti raktinių žodžių kintamo ilgio argumentų sąrašą. Mes naudojame pavadinimą kwargs su dviguba žvaigžde. Priežastis ta, kad dviguba žvaigždutė leidžia mums pereiti per raktinių žodžių argumentus (ir bet kokį jų skaičių).

np.sujungti
  • Raktinio žodžio argumentas – tai vieta, kur suteikiate kintamojo pavadinimą, kai perduodate jį funkcijai.
  • Galima galvoti apie kwargs kaip žodyną, susiejantį kiekvieną raktinį žodį su verte, kurią perduodame kartu su juo. Štai kodėl, kai kartojame kwargs Atrodo, kad nėra jokios tvarkos, kuria jie buvo atspausdinti.

1 pavyzdys:

Python programa, skirta iliustruoti *kwargs kintamam raktinių žodžių argumentų skaičiui. Čia **kwargs priima raktinį žodį kintamo ilgio argumentas, perduodamas funkcijos iškvietimo. for first = „Geeks“ pirmiausia yra raktas, o „Geeks“ yra vertė. paprastais žodžiais tariant, tai, ką mes priskiriame, yra vertybė, o kam priskiriame, svarbiausia.

patobulinta java kilpa
Python
def myFun(**kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun(first='Geeks', mid='for', last='Geeks')>

Išvestis:

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

2 pavyzdys:

Python programa, skirta **kwargs iliustruoti įvairiam raktinių žodžių argumentų skaičiui su vienu papildomu argumentu. Visiškai tas pats, bet vienas pokytis yra tai, kad perduodame ne raktinio žodžio argumentą, kuris yra priimtinas poziciniu argumentu (arg1 programoje myFun). ir raktinių žodžių argumentai, kuriuos perduodame, yra priimtini **kwargs. paprasta tiesa?

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')>

Išvestis:

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

Naudojant *args ir **kwargs Python funkcijai iškviesti

1 pavyzdys:

Čia mes pateikiame *args ir **kwargs kaip argumentą myFun funkcijoje. *args perdavimas myFun tiesiog reiškia, kad perduodame pozicinius ir kintamo ilgio argumentus, kurie yra arguose. Taigi, Geeks pereina į arg1 , o pereina į arg2, o Geeks pereina į arg3. Kai perduodame **kwargs kaip argumentą myFun, tai reiškia, kad jis priima raktinių žodžių argumentus. Čia arg1 yra raktas, o reikšmė yra Geeks, kuri perduodama į arg1, ir lygiai taip pat ir Geeks perduoda atitinkamai arg2 ir arg3. Perdavus visus duomenis, visus duomenis spausdiname eilutėmis.

pitonas
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)>

Išvestis:

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

2 pavyzdys:

Čia mes pateikiame *args ir **kwargs kaip argumentą myFun funkcijoje. kur 'geeks', 'už', 'geeks' yra perduodamas kaip *args, ir pirmas = Geeks, vidutinis = už, paskutinis = Geeks perduodamas kaip **kwargs ir spausdinimas toje pačioje eilutėje.

pitonas
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')>

Išvestis:

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

*args ir **kwargs naudojimas Python, norint nustatyti objekto reikšmes

1 pavyzdys: naudojant 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)>

Išvestis:

red 250>

2 pavyzdys: naudojant 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)>

Išvestis:

red 250>