Pythoni argumendid: positsioon, märksõna, *args ja **kwargs

1. Mis on Python’i argumendid?

Pythonis on argumendid viis, kuidas funktsioonid ja meetodid saavad välisest allikast andmeid vastu võtta ja konkreetseid toiminguid täita. Argumendid funktsioonidele edastades on võimalik teha paindlikku andmetöötlust, mis parandab programmi taaskasutatavust ja laiendatavust. Selles artiklis selgitame samm-sammult Python’i argumentide aluseid kuni rakendusteni.

Funktsioonide ja argumentide põhilised rollid

Funktsioon on käsukogum, mis täidab kindlat ülesannet. Argument on sisendandmed, mis antakse funktsioonile, ja seda kasutatakse järgmiselt.
def greet(name):
    print(f"Tere, {name}!")
Selles näites saab argumendile name anda suvalise nime, et kuvada individuaalne sõnum.
greet("佐川")  # Väljund: Tere, 佐川!

2. Pythonis argumentide põhialused

Järgmisena vaatleme Pythonis argumentide kasutamist asukohaargumentide, märksõnaargumentide ja vaikimisi argumentide vaatenurgast.

Asukohaargumendid ja nende tähtsus

Asukohaargumendid edastatakse funktsioonile funktsiooni väljakutsumisel argumentide määratud järjekorras.
def add(a, b):
    return a + b

result = add(5, 3)  # Tulemus: 8

Märksõnaargumentide kasutamine

Märksõnaargumentide kasutamisega ei pea muretsema argumentide järjekorra pärast, vaid saab funktsioonile väärtusi selgelt edastada.
def introduce(name, age):
    print(f"Ma olen {name}. Vanus on {age} aastat.")

introduce(age=25, name="Sagawa")  # Väljund: Ma olen Sagawa. Vanus on 25 aastat.

Vaikimisi argumentide kasutamine

Vaikimisi argumentide seadistamisega on võimalik, kui argument jäetakse välja, kasutada vaikimisi väärtust.
def greet(name="Külaline"):
    print(f"Tere, {name}!")

greet()  # Väljund: Tere, külaline!

Argumentide järjekord

Kui kasutatakse asukoha- ja märksõnaargumente samaaegselt, tuleb asukohaargumendid määrata kõigepealt ja märksõnaargumendid hiljem. Järjekorra eksimine põhjustab vea.
侍エンジニア塾

3. Pythoni muutuvpikkusega argumendid (*args ja **kwargs)

*args kasutamine

*args kasutatakse funktsioonile suvalise arvu positsioonilisi argumente edastamiseks. Sellega saab funktsiooni muuta üldisemaks.
def print_numbers(*args):
    for number in args:
        print(number)

print_numbers(1, 2, 3)  

**kwargs kasutamine

**kwargs abil saab võtta suvalised märksõnaargumendid sõnastiku kujul.
def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Sagawa", age=30, job="kirjanik")  

*args ja **kwargs kombinatsioon

*args ja **kwargs kombineerides saab luua paindliku funktsiooni, mis võtab vastu nii positsioonilisi kui ka märksõnaargumente.
def process_data(*args, **kwargs):
    total = sum(args)
    print(f"Kokku: {total}")
    for key, value in kwargs.items():
        print(f"{key}: {value}")

process_data(1, 2, 3, name="Sagawa", age=30)

4. Argumentide rakendused ja kasutusnäited

Praktilised rakendused: API parameetrite töötlemine

API kutsumisel on vaja töödelda dünaamilisi parameetreid.*args ja **kwargs kasutades saab mitut parameetrit paindlikult käsitleda.
def api_call(endpoint, **params):
    print(f"API lõpp-punkt: {endpoint}")
    for key, value in params.items():
        print(f"{key}: {value}")

api_call("/user", id=123, action="view")

Rakendused suurandmete töötlemisel

Ka suurte andmete töötlemise funktsioonides saab *args abil muutuvpikkusega argumente tõhusalt käsitleda.
侍エンジニア塾

5. Argumentide veahaldus ja valideerimine

Argumentide arvu veahaldus

Kui funktsioonile antud argumentide arv on vähem kui oodatud, saab veahaldust kasutades vältida programmi kokkujooksmist.
def add_numbers(*args):
    if len(args) < 2:
        raise ValueError("Vähemalt kaks argumenti on vajalikud")
    return sum(args[:2])

Tüübi valideerimine

Argumentide tüübi kontrollimisega saab vältida ootamatuid vigu.
def multiply(a, b):
    if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
        raise TypeError("Argument peab olema arv")
    return a * b

try-except abil veahaldus

Kasutades try-except süntaksit, saab vigu püüda ja nendega õigesti toime tulla.
def divide(a, b):
    try:
        result = a / b
    except ZeroDivisionError:
        return "Ei saa jagada nulliga"
    except TypeError:
        return "Palun sisestage arv"
    return result

6. Kokkuvõte

Selle artikli kaudu käsitlesime laialdaselt Python’i argumentide aluseid ja rakendusi. Eriti tahaksime rõhutada *args ja **kwargs kasutamist paindlikus funktsioonide määratlemises, samuti veahaldamise ja valideerimise tähtsust.

Peamised punktid:

  • Positsiooniliste argumentide, märksõnaargumentide ja vaikimisi argumentide alused
  • Paindlik funktsioonide määratlemine *args ja **kwargs kasutades
  • Argumentide veahaldamise ja valideerimise tähtsus
Nende teadmiste põhjal saate luua paindlikku ja vastupidavat Python’i koodi, mis on kasulik töökohal.