Függvényargumentumok használata a Pythonban

Befejeződött

Most, hogy már tudja, hogyan hozhat létre bemenet nélküli függvényt, a következő lépés az argumentumot igénylő függvények létrehozása. Az argumentumok használata rugalmasabbá teszi a függvényeket, mert többet tehetnek, és feltételessé tehetik a működést.

Argumentum megkövetelése

Ha rakétahajót tesztel, a szükséges bemenetek nélküli függvény olyan, mint egy gombot tartalmazó számítógép, amely jelzi az időt. Ha lenyomja a gombot, egy számítógépes hang jelzi az időt. A szükséges bemenet azonban az utazási távolság kiszámítására szolgáló cél lehet. A szükséges bemeneteket a függvény argumentumainak nevezzük.

Argumentum megköveteléséhez tegye a zárójelek közé:

def distance_from_earth(destination):
    if destination == "Moon":
        return "238,855"
    else:
        return "Unable to compute to that destination"

Próbálja meg argumentumok nélkül meghívni a distance_from_earth() függvényt:

distance_from_earth()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: distance_from_earth() missing 1 required positional argument: 'destination'

A Python egy hibaüzenettel jelenik TypeError meg, amely szerint a függvényhez egy nevesített destinationargumentum szükséges. Ha a rakétahajó számítógépét arra kérik, hogy számítsa ki az utazási távolságot egy célhelyen, a célhelyre vonatkozó követelménynek kell lennie. A példakódnak két elérési útja van a válaszhoz, az egyik a Holdhoz, a másik pedig bármi máshoz. Válaszhoz használja a Holdat bemenetként:

distance_from_earth("Moon")
238,855

Mivel van egy catch-all feltétel, próbáljon meg más sztringeket használni célként a viselkedés ellenőrzéséhez:

distance_from_earth("Saturn")
Unable to compute to that destination

Több kötelező argumentum

Több argumentum használatához vesszővel kell elválasztania őket. Hozzunk létre egy függvényt, amely kiszámítja, hogy hány napig tart egy cél elérése, a távolság és az állandó sebesség alapján:

def days_to_complete(distance, speed):
    hours = distance/speed
    return hours/24

Most használja a Föld és a Hold közötti távolságot, hogy kiszámítsa, hány napig tartana a Holdhoz való eljutás óránként 75 mérföldes sebességkorlátozással:

days_to_complete(238855, 75)
132.69722222222222

Függvények argumentumként

A függvény értékét használhatja days_to_complete() , és hozzárendelheti egy változóhoz, majd átadhatja round() (egy beépített függvény, amely a legközelebbi egész számra kerekül) egy egész szám lekéréséhez:

total_days = days_to_complete(238855, 75)
round(total_days)
133

Hasznos minta azonban, ha függvényeket ad át más függvénynek a visszaadott érték hozzárendelése helyett:

round(days_to_complete(238855, 75))
133

Tipp.

Bár a függvények közvetlenül más függvényekbe való továbbítása hasznos bemenetként, lehetséges, hogy csökken az olvashatóság. Ez a minta különösen akkor problémás, ha a függvények számos argumentumot igényelnek.