Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Mielivaltaiset Paikalliset Argumentit | Mielivaltaiset argumentit
Python-funktioiden Opas
Osio 3. Luku 1
single

single

Mielivaltaiset Paikalliset Argumentit

Pyyhkäise näyttääksesi valikon

Olet jo tutustunut paikallisiin ja valinnaisiin argumentteihin. Kun funktio voi vastaanottaa useita syötteitä tai et tiedä niitä etukäteen, voit käyttää mielivaltaisia paikallisia argumentteja. Näiden avulla funktio voi ottaa vastaan minkä tahansa määrän arvoja.

Note
Huomio

Jokainen argumentti voi olla mikä tahansa tietorakenne (lista, sanakirja jne.). Mielivaltaiset argumentit mahdollistavat niin monen tällaisen olion välittämisen kuin on tarpeen.

Mielivaltaiset paikalliset argumentit määritellään lisäämällä tähti * parametrin nimen eteen. Esimerkki:

12345678
# Define function with arbitrary positional arguments named values def calculate_sum(*values): return sum(values) # Test the function using different number of arguments print(calculate_sum(1, 2, 3)) print(calculate_sum(1, 2, 3, 4)) print(calculate_sum(1, 2, 3, 4, 5))

Tässä *values kerää kaikki annetut paikalliset argumentit tupleen. Funktion sisällä käytetään muuttujan nimeä ilman *-merkkiä. Tulos on oikea riippumatta siitä, kuinka monta argumenttia annetaan.

Note
Huomio

Vaikka mikä tahansa nimi käy, yleisin ja luettavin tapa on *args.

1234567891011121314
def example_function(*args): print(type(args)) print(args) for arg in args: print(arg) print('Call without arguments:') example_function() print('\nCall with one argument:') example_function(1) print('\nCall with multiple arguments:') example_function(1, 2, 3, 'hello', [4, 5, 6])

Kuten esimerkissä:

  • Ei argumentteja → args on ();
  • Yksi argumentti → (1,);
  • Useita argumentteja → kaikki arvot näkyvät tuple-muodossa, esim. (1, 2, 3, 'hello', [4, 5, 6]).

*args toimii kuten mikä tahansa tuple, tarjoten täyden joustavuuden useiden syötteiden käsittelyyn.

Koska *args on pelkkä tuple, voit käyttää mitä tahansa logiikkaa sen arvoihin – mukaan lukien ehtolauseet. Esimerkiksi, kun kaikki hinnat on laskettu yhteen, voit tarkistaa kokonaissumman ja soveltaa eri sääntöjä tuloksen perusteella.

Tyhjien argumenttien käsittely

Koska *args kerää syötteet tupleen, on mahdollista, että käyttäjä kutsuu funktiotasi ilman yhtään argumenttia (example_function()). Tässä tapauksessa args on tyhjä tuple: ().

On hyvä käytäntö tarkistaa, onko *args tyhjä ennen tietojen käsittelyä. Tämä on helppoa, koska tyhjät tuplet ovat "epätosia" (falsy) Pythonissa. Tässä on kaksi yleistä tapaa käsitellä tyhjää *args-tuplea.

if not args -rakenteen käyttö

Voit käyttää if not args -rakennetta tunnistaaksesi tyhjän tuplen ja käsitellä sen heti, esimerkiksi palauttamalla 0 tai mukautetun viestin.

1234567891011
def calculate_average(*prices): # Checking if the tuple is empty if not prices: return 'No prices provided!' # If it's not empty, proceed with the calculation return sum(prices) / len(prices) # Testing the function print(calculate_average(10, 20, 30)) # Output: 20.0 print(calculate_average()) # Output: No prices provided!

Pituuden tarkistaminen len()-funktiolla

Vaihtoehtoisesti voit tarkistaa, onko argumenttien kokonaismäärä nolla käyttämällä len()-funktiota:

1234567
def strict_sum(*values): if len(values) == 0: print('Warning: No values received.') return 0 return sum(values) print(strict_sum()) # Output: Warning: No values received. -> 0
Tehtävä

Pyyhkäise aloittaaksesi koodauksen

Toteuta calculate_total-funktio, joka laskee ostoskoriin lisättyjen tuotteiden kokonaishinnan ja soveltaa alennuksia kokonaissumman perusteella.

  1. Käytä mielivaltaisia paikallisia argumentteja nimellä calculate_total-funktiossa.
  2. Jos argumentteja ei anneta, palauta 'Your cart is empty.'.
  3. Alennukset ovat toisensa poissulkevia – sovella vain suurinta mahdollista:
    • Sovella 20 % alennusta, jos kokonaissumma on $200 tai enemmän.
    • Sovella 10 % alennusta, jos kokonaissumma on $100 tai enemmän.
    • Muussa tapauksessa ei alennusta.
  4. Palauta lopullinen summa muotoiltuna merkkijonona: 'Final total: $X.XX'.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 1
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

some-alt