Izpratne par *args un **kwargs Python funkciju definīcijās

Python

Python funkciju parametru izpēte

Python programmā *args un kwargs lietojuma izpratne ir ļoti svarīga elastīgu un dinamisku funkciju rakstīšanai. Šie īpašie sintakses elementi ļauj izstrādātājiem funkcijai nodot mainīgu argumentu skaitu, padarot kodu daudzkārt izmantojamāku un efektīvāku.

Šajā rakstā mēs izpētīsim, ko nozīmē simboli * (viena zvaigzne) un (dubultzvaigzne), kad tos izmanto funkciju parametros. Mēs arī apskatīsim praktiskus piemērus, kā izmantot *args un kwargs, lai apstrādātu dažādus scenārijus savā kodā.

Pavēli Apraksts
*args Ļauj funkcijai pieņemt mainīgu skaitu pozicionālo argumentu. Argumenti tiek nodoti kā rindkopa.
kwargs Ļauj funkcijai pieņemt mainīgu skaitu atslēgvārdu argumentu. Argumenti tiek nodoti kā vārdnīca.
print() Izvada norādīto ziņojumu konsolei vai citai standarta izvades ierīcei.
get() Izgūst ar norādīto atslēgu saistīto vērtību no vārdnīcas. Ja atslēga netiek atrasta, atgriež noklusējuma vērtību.
join() Savieno iterējamā elementa elementus (piemēram, sarakstu vai virkni) vienā virknē ar noteiktu atdalītāju.
f-string Formatēts virknes literāls, kas izpildes laikā ļauj novērtēt izteiksmes krokainajās iekavās.

Padziļināti ienirt *args un kwargs programmā Python

Piedāvātie skripti parāda, kā to izmantot un Python funkciju definīcijās. Pirmais skripts definē funkciju tam nepieciešami divi nepieciešamie argumenti, x un , kam seko jebkurš papildu pozicionālo argumentu skaits, ko attēlo . Zvanot ar papildu argumentiem tie tiek uztverti kā kortežs un izdrukāti. Tas ļauj funkcijai graciozi apstrādāt dažādu skaitu argumentu. Otrā funkcija, bar, pieņem divus obligātos argumentus un neierobežotu skaitu atslēgvārdu argumentu, izmantojot . Šie atslēgvārdu argumenti tiek apkopoti vārdnīcā, ļaujot funkcijai apstrādāt elastīgas ievades ar nosaukumu.

Otrais skripta piemērs ievada un funkcijas, lai sīkāk ilustrētu to lietošanu un kwargs. The izdrukā gan pozicionālos, gan atslēgvārdu argumentus, parādot to kolekciju attiecīgi kortežās un vārdnīcās. The funkcija izceļ praktisku lietošanas gadījumu, kad ļauj izmantot neobligātus atslēgvārdu argumentus, piemēram, pielāgojamu sveiciena ziņojumu. Izmantojot sviras efektu get() uz vārdnīca, funkcija var nodrošināt noklusējuma vērtību, ja sveiciena atslēgvārds netiek nodrošināts, demonstrējot šo konstrukciju izmantošanas elastību un jaudu reālās pasaules scenārijos.

*args un kwargs izmantošana Python funkcijās

Python

def foo(x, y, *args):
    print("Required arguments:", x, y)
    print("Additional arguments:", args)

def bar(x, y, kwargs):
    print("Required arguments:", x, y)
    print("Keyword arguments:", kwargs)

foo(1, 2, 3, 4, 5)
# Output:
# Required arguments: 1 2
# Additional arguments: (3, 4, 5)

bar(1, 2, a=3, b=4, c=5)
# Output:
# Required arguments: 1 2
# Keyword arguments: {'a': 3, 'b': 4, 'c': 5}

Izpratne par *args un kwargs lietošanu

Python

def example_function(*args, kwargs):
    print("Positional arguments:", args)
    print("Keyword arguments:", kwargs)

example_function(1, 2, 3, a="apple", b="banana")
# Output:
# Positional arguments: (1, 2, 3)
# Keyword arguments: {'a': 'apple', 'b': 'banana'}

def greet(name, *args, kwargs):
    greeting = kwargs.get('greeting', 'Hello')
    print(f"{greeting}, {name}!")
    if args:
        print("Additional names:", ', '.join(args))

greet("Alice")
# Output: Hello, Alice!

greet("Alice", "Bob", "Charlie", greeting="Hi")
# Output:
# Hi, Alice!
# Additional names: Bob, Charlie

Uzlabota *args un kwargs lietošana

Papildus pamata piemēriem, un var būt neticami spēcīgi rīki uzlabotajā Python programmēšanā. Viens uzlabotas lietošanas gadījums ir funkciju dekoratoros. Dekoratori ir veids, kā modificēt vai uzlabot funkcijas vai metodes, nemainot to faktisko kodu. Izmantojot un kwargs, dekoratorus var rakstīt darbam ar jebkādu argumentu skaitu, padarot tos ārkārtīgi elastīgus un atkārtoti lietojamus. Piemēram, reģistrēšanas dekorētājs var pieņemt jebkuru funkciju, reģistrēt tās argumentus un atgriezt vērtību un pēc tam nodot šos argumentus sākotnējai funkcijai, izmantojot un . Tas ļauj dekoratoru bez izmaiņām izmantot ar dažādu parakstu funkcijām.

Vēl viena uzlabota lietojumprogramma ir klases metožu un mantojuma kontekstā. Definējot bāzes klases metodi, kas izmanto un , atvasinātās klases var ignorēt šo metodi un tomēr pieņemt papildu argumentus, tos tieši nenorādot. Tas var vienkāršot koda apkopi un palielināt elastību, jo bāzes klasei nav iepriekš jāzina visi iespējamie argumenti. Turklāt un kwargs var izmantot, lai pārsūtītu argumentus uz vecākklases metodēm, nodrošinot, ka tiek saglabāta pilna bāzes klases funkcionalitāte, vienlaikus paplašinot vai mainot tās uzvedību.

  1. Kas ir ?
  2. Tos izmanto, lai funkcijai nodotu mainīgu skaitu pozicionālo argumentu.
  3. Kas ir ?
  4. Tie ļauj funkcijai nodot mainīgu skaitu atslēgvārdu argumentu.
  5. Vai es varu izmantot un kopā?
  6. Jā, varat izmantot abus vienā un tajā pašā funkcijā, lai apstrādātu jebkuru pozīcijas un atslēgvārdu argumentu kombināciju.
  7. Kā piekļūt nodotajiem argumentiem ?
  8. Tie ir pieejami funkcijā kā kortežs.
  9. Kā piekļūt nodotajiem argumentiem ?
  10. Tie ir pieejami kā vārdnīca funkcijas ietvaros.
  11. Kāpēc es izmantotu ?
  12. Lai funkcija varētu pieņemt jebkādu skaitu pozicionālo argumentu, uzlabojot tās elastību.
  13. Kāpēc es izmantotu ?
  14. Lai pieņemtu jebkuru atslēgvārdu argumentu skaitu, kas var padarīt funkciju daudzpusīgāku.
  15. Var un nosaukt savādāk?
  16. Jā, nosaukumi ir pieņemti, taču jūs varat tos nosaukt jebko, kas jums patīk.
  17. Kāds ir praktisks izmantošanas piemērs ?
  18. Vairāku vērtību nodošana funkcijai, kas tās summē.
  19. Kāds ir praktisks izmantošanas piemērs ?
  20. Funkcijas izveide, kas veido vārdnīcu no atslēgvārdu argumentiem.

Iesaiņošana ar *args un kwargs

Izpratne un izmantošana un Python funkcijās var ievērojami uzlabot savas programmēšanas prasmes. Šie rīki piedāvā lielu elastības pakāpi funkciju definīcijās, ļaujot rakstīt dinamiskāku un atkārtoti lietojamu kodu. Apgūstot šos jēdzienus, varat izmantot dažādus argumentus savās funkcijās, padarot kodu pielāgojamāku un vieglāk uzturējamu.

Neatkarīgi no tā, vai rakstāt dekoratorus, kārtojat mantojumu nodarbībās vai vienkārši vēlaties nodot nezināmu skaitu argumentu, un nodrošināt nepieciešamo funkcionalitāti. Turpiniet eksperimentēt ar šīm funkcijām, lai atklātu visu to potenciālu un integrētu tās savā kodēšanas praksē efektīvākai un jaudīgākai Python programmēšanai.