Python 3.x Mi a különbség a return és print között?
Nagyon sok angol magyarázós videót néztem, de az az érzésem, hogy az agyam legmélyén értem, de mégsem.
Példa:
Nem működik:
def do_math(num1, num2):
return num1 + num2
do_math(2, 2)
---
Működik:
def do_math(num1, num2):
return num1 + num2
math1 = do_math(2, 2)
print(math1)
----
Ez miért van?
És ha csak simán print(do_math(2, 2)) -t használok az helyes? Mármint működik csak ez is egy hasznos megoldás?
A return-t kizárólag függvények belsejében használod. Ez kilép a függvényből egy értékkel, amivel aztán kezdhetsz valamit.
Interaktív módban előfordulhat, hogy egy függvény futása után a visszatérési érték kiíródik, de ez ne zavarjon össze. A return nem erre való.
A print maga is egy függvény (ami érdekességként None értékkel tér vissza), ezt használjuk kiírásra.
Mondom én, hogy ezzel az egyedül tanulással csak szivatjátok magatokat. Négyszer annyit "tanultok" és a végén még feleannyit sem tudtok, mint az aki iskolában képzi magát.
Ha meghívsz egy függvényt, akkor azért teszed, hogy az csináljon valamit. Mondjuk szorozzon össze két számot. Ennek a két számnak a szorzatával fog visszatérni a RETURN (mondjuk pici angol nem ártana). A PRINT meg, szintén nevéhez híven, egy NYOMTATÓ függvény, amely a paraméteréül kapott számot, szöveget kinyomtatja a képernyőre, file-ba, vagy a standard kimenetre. Ennek a függvénynek a visszatérési értéke vagy az, hogy sikerült-e a nyomtatási művelet, vagy az hogy 'none', esetleg 'void' mivel ennek a függvénynek a visszatérési értékét nem kötelező, jellemzően nem is szokás felhasználni.
A math1 változót hagyjuk ki, és akkor ennyi a különbség két megoldás között, talán így jobban érthető:
1: do_math(2, 2)
2: print( do_math(2, 2) )
Az első esetben meghívódik a függvény, és utána nem használod semmire a visszatérési értéket. A második esetben is meghívod, csak ott kiíratod a képernyőre ezt a értéket.
A do_math függvény nem változtat meg semmilyen adatot a hívó oldalon, vagy bárhol máshol, csak a visszatérési értékben látszik a munkája, úgyhogy ha a hívó oldalon nem kezdesz vele valamit (az 1-es esetben), akkor teljesen felesleges meghívni. A 2-es esetben a do_math visszatérési értékét már felhasználod a print paramétereként.
Egy halvány gyanúra alapozva kérdezem: Ugye tudod, mi az a "függvény visszatérési értéke"?
...És a kérdésre: a "return" adja meg a függvény kilépési pontját, ahonnan a végrehajtás visszatér a hívás helyére. Megadható vele az az érték is, amit visszaad, tehát amilyen értéket a függvényhívás, mint kifejezés felvesz majd.
Csak leegyszerűsítve, a magyarázat kedvéért, pl:
# hívás előtt:
print( do_math(2, 2) )
# hívás után, amikor a hívás helyén megjelenik a függvény visszatérő értéke:
print( 4 )
Ilyen szempontból a függvényhívás picit olyan, mint egy változó: Van típusa és értéke, az értéke pedig a függvény futásakor áll elő, a függvényen belül a return utasítással adjuk meg, és ez a függvény visszatérési értéke.
7:
"Mert az egyetemen a 200 fős előadóban pont megválaszolnák neki ezt a kérdést"
Ha ott lenne, akkor ez az amúgy roppant buta kérdés (bocs 1.0) fel sem merült volna benne, mert az oktatási metodika tisztázná benne a fogalmakat, ergo: El sem juthatna eddig a szégyenletes pontig (bocs 2.0).
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!