Függvényargumentumok használata a Pythonban
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 destination
argumentum 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.