Funkciók
Eddig minden kódunkat az app.py-be írtuk, de a programjaink növekedésével egyre jobb módszerre van szükségünk a kódunk rendszerezésére. A kódunkat kisebb, jobban kezelhető és karbantartható darabokra kell felosztanunk, amelyeket függvényeknek nevezünk. A funkció egy tároló néhány sornyi kód számára, amelyek egy adott feladatot hajtanak végre.
Például már tanult néhány beépített funkciót a Pythonban print()
és a input()
. Minden funkciónak megvan a célja, és tudja, hogyan kell végrehajtani egy adott feladatot. Tehát amikor nagy, összetett programokat építünk, a kódunkat kisebb újrafelhasználható darabokra, azaz függvényekre kell feldarabolnunk.
Értsük meg ezt a koncepciót egy üdvözlő üzenet kinyomtatására szolgáló program felépítésével.
print('Hi there!')
print('Welcome aboard!')
Itt van egy egyszerű programunk, mindössze két sornyi kóddal. Tegyük fel, hogy szükségünk lesz rájuk más programokban, hogy olyan funkcióba helyezzük őket, amelyet újra felhasználhatunk.
Hadd mutassak be egy fenntartott kulcsszót def
Pythonban, amely a define rövidítése, és egy függvény meghatározására szolgál.
def greet_user():
print('Hi there!')
print('Welcome aboard!')
Most ez a kódblokk meghatároz egy függvényt "greet_user
” az ezt követő kódsorokkal. Amikor ezt a függvényt meghívjuk, ez a két sor kerül végrehajtásra. Használjuk ezt:
print('start')
greet_user()
print('finish')
A program szekvenciálisan fut, ami azt jelenti, hogy meg kell határozni egy függvényt, mielőtt meghívná a programban.
paraméterek
A definiált függvények egy kicsit másképp működnek, mint a Python beépített függvényei. Például abban az esetben print()
egy függvény, bizonyos információkat igényel, amelyeket ki akarunk nyomtatni, de az üdvözlő funkciónk nem vesz fel semmilyen információt. Nem lenne szebb, ha átadná ide a felhasználó nevét, majd a „szia” helyett kinyomtathatná a felhasználó nevét?
Ezt úgy teheti meg, hogy hozzáadja a paramétereket a definiált függvény zárójelébe. Hadd mutassam meg:
def greet_user(name):
print('Hi there!')
print('Welcome aboard!')
Most a "name
” a zárójelben lévő ” helyi változóként fog működni, és a hívásakor átadhatjuk a felhasználó nevét.
greet_user('Shahbaz')
Most a név paraméter beállítása "Shahbaz
”. Változtassuk meg a programot, hogy kihasználjuk.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
print('finish')
Fontos megjegyezni, hogy az első sorban lévő „nevet” paraméternek, míg a megadott nevet, azaz Shahbazt argumentumnak nevezzük.
Menjünk előre, és futtassuk ezt a programot.
Ezekkel a paraméterekkel tehát információt kaphatunk a függvényeinkben.
Most pedig csináljunk valami érdekeset. Tegyük fel, hogy egy másik nevet szeretne hozzáadni az üdvözlő üzenethez. Ez egyszerű.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
greet_user('Aayush')
print('finish')
Most vegye figyelembe, hogy ha egy függvénynek van paramétere, akkor kötelesek vagyunk átadni egy értéket ennek a paraméternek. Ha eltávolítja a nevet a függvényből és futtatja a programot, hibaüzenetet kapunk. Több paramétert is használhat egyetlen függvényben, vesszővel elválasztva.
Például, greet_user(first_name, last_name):
. Az érvek is hasonlóan lesznek formázva.
Kulcsszóérvek
Eddig azt tanultuk, hogy amikor paramétereket definiálunk a függvényeinkhez, mindig értékeket kell megadnunk, különben hibát kapunk. Az utolsó programban az érvek 'Shahbaz'
és a 'Bhatti'
pozíciós argumentumoknak nevezzük, ami azt jelenti, hogy pozíciójuk vagy sorrendjük számít a programban.
A Pythonban van egy másik fajta kulcsszó argumentum, amelynél a pozíció nem számít. Hadd mutassam meg, hogyan működnek.
Nézd meg az utolsó programot. Ezt így módosíthatjuk:
def greet_user(first_name, last_name):
print(f'Hi {first_name} {last_name}')
print('Welcome aboard!')
print('start')
greet_user(first_name='Shahbaz', last_name='Bhatti')
print('finish')
Most a first_name
és a last_name
a kulcsszó paraméterei. Cserélheted a helyüket, és az eredmény ugyanaz lesz.
Ez most nem jelenti azt, hogy mindig kulcsszóargumentumokat kell használnunk. Legtöbbször pozicionális argumentumokat használunk, de bizonyos helyzetekben ezek a kulcsszó-argumentumok segítenek javítani a kódunk olvashatóságát.
Van még egy dolog, amit tudnia kell a kulcsszó-argumentumokról. A kulcsszó-argumentumok mindig a pozíciós argumentumok után következzenek.
Visszaküldési nyilatkozat
Eddig megtanultuk, hogyan lehet függvényeket létrehozni és a paramétereik segítségével információkat küldeni nekik. Most pedig tanuljuk meg, hogyan hozhatunk létre értékeket visszaadó függvényeket. Ez különösen akkor hasznos, ha valamilyen számítást végez, és vissza szeretné adni az eredményt annak, aki a függvényét használja. Hadd mutassam meg.
Definiáljunk egy függvényt, amely kiszámolja egy szám négyzetét.
def square(number):
return number*number
A return utasítást használtuk ennek a számnak a függvényen kívüli visszaadására. Ha ezt a függvényt meghívjuk, akkor olyan értéket ad vissza, mint a input()
funkció. Nyomtassuk ki a terminálra.
Érvelheti, hogy ugyanaz az eredmény érhető el a return utasítás használata nélkül. Nézzük meg.
Két dolgot látunk, a 9-es számot, és egyet sem. Mi történik itt?
Amikor a Python értelmező végrehajtja ezt a kódot, először a négyzetfüggvényt hívja meg, és a vezérlő a függvényre lép. Itt kiszámoljuk ennek a számnak a négyzetét, majd kinyomtatjuk a terminálra.
Most alapértelmezés szerint minden függvény a none értéket adja vissza. Tehát ha itt nincs return utasítás, akkor a Python alapértelmezés szerint egyiket sem ad vissza. Egyik sem olyan objektum, amely az érték hiányát jelzi. Olyan, mintha semmi vagy null lenne C, C++, Java és Javascript nyelven.
Csomagolj!
Remélem megértette a funkciók fontosságát.
Ezek a Python-tanulás jelentős részét képezik, ha nagy és összetett programokat tervez kódolói karrierje során.
Hagy egy Válaszol