2.14. Függvények definiálása¶
Egy függvény egy kódblokkot csomagol be egy név alá, hogy sok helyről meg lehessen hívni. Bárhol, ahol egy számítás, művelet vagy körülhatárolt munkadarab egynél többször jelenik meg, egy függvény egyetlen, névvel ellátott dologgá alakítja.
A kulcsszó a def:
def greet(name):
print("hello,", name)
greet("Alice")
greet("Bob")
Kimenet:
hello, Alice
hello, Bob
A def szóval kezdődő sor a definíció – létrehozza a függvényt, de nem futtatja le a törzsét. A greet("Alice") hívása az, ami lefuttatja a behúzott blokkot.
2.14.1. Paraméterek és argumentumok¶
A def sor zárójelében lévő nevek a paraméterek – helyőrzők azokhoz az értékekhez, amelyeket a hívó majd megad. A ténylegesen átadott értékek az argumentumok. Egy függvény nulla vagy több paramétert vehet át:
def square(x):
return x * x
def add(a, b):
return a + b
def is_even(n):
return n % 2 == 0
A rossz számú argumentummal történő hívás azonnal TypeError kivételt vált ki.
2.14.2. return¶
A return utasítás azonnal befejezi a függvényt, és egy értéket ad vissza a hívónak:
def absolute(x):
if x < 0:
return -x
return x
Egy függvény, amely soha nem ér el return utasítást (vagy egy érték nélküli puszta return utasítása van), None értéket ad vissza:
>>> def shout(text):
... print(text.upper())
...
>>> result = shout("hi")
HI
>>> print(result)
None
Egy függvénynek több return utasítása is lehet; az elsőként elért nyer, a törzs többi része pedig kimarad.
2.14.2.1. Több érték visszaadása¶
A Python hívásonként egy objektumot ad vissza, de ez az objektum lehet egy tuple – és a hívó a helyszínen kicsomagolhatja:
def minmax(values):
return (min(values), max(values))
lo, hi = minmax([3, 1, 4, 1, 5, 9])
A visszatérési érték körüli zárójelek opcionálisak; a return a, b és a return (a, b) ugyanaz.
2.14.3. Docstringek¶
Egy függvény törzsének első utasításaként elhelyezett sztringliterál egy docstring. A függvényobjektumon tárolódik, és ezt jeleníti meg a help():
def scale(value, factor):
"""Multiply ``value`` by ``factor`` and return the result."""
return value * factor
Az IDE eszköztippekben mutatja a docstringeket, amikor a kurzor a függvény neve fölött lebeg, így már egy egysoros összefoglaló is megtérül. A háromszoros idézőjelű sztringek lehetővé teszik, hogy a docstring több sorra terjedjen ki, amikor több részlet hasznos.
2.14.4. Elnevezési konvenciók¶
A függvénynevek snake_case formát használnak – aláhúzásjelekkel elválasztott kisbetűs szavak. A névnek le kell írnia, mit csinál a függvény:
Jó:
read_temperature,parse_header,is_valid.Kerülendő:
do_stuff,handle1,temp_func.
Egy kezdő aláhúzásjel (_helper) azt jelzi, hogy a függvény a moduljához belső. A konvenciót széles körben tiszteletben tartják, de a Python nem kényszeríti ki.