Docy

Függvény

Estimated reading: 10 minutes 0 views

Függvény (def)

A „def” kulcsszó a Python nyelvben a függvények definiálására szolgál. A függvények olyan kódrészletek, amelyeket újra és újra használhatunk a programunkban, ezáltal csökkentve a kódképzési időt és javítva a kód olvashatóságát.

A függvények definiálásához használatos „def” kulcsszó után a függvény neve következik, amelyet zárójelekbe kell tennünk. Az zárójelekben szerepelnek a függvény bemenő paraméterei. Az utasításokat kettősponttal kell lezárni és indentálni (bekezdeni) kell őket a következő sorban.

Példa

Például, ha szeretnénk egy függvényt definiálni, amely két számot ad össze, akkor írhatunk egy ilyen függvénydefiníciót:

				
					def osszeadas(szam1, szam2):
    eredmeny = szam1 + szam2
    return eredmeny
				
			

Ezután hívhatjuk a függvényt a következő módon:

				
					eredmeny = osszeadas(2, 3)
print(eredmeny)

				
			
				
					5
				
			

A fenti példában láthatjuk, hogy a „def” kulcsszó után a függvény neve következik, amelyet zárójelekbe helyeztünk. Az utasításokat kettősponttal zártuk le, és indentáltuk őket. A függvény visszatérési értékét a „return” kulcsszóval adtuk meg.

A függvény hívásakor az argumentumokat a zárójelekbe helyezzük, és a függvény nevét követően írjuk. A függvény visszatérési értékét a változóba mentjük, majd a „print” függvénnyel kinyomtatjuk az eredményt.

A függvényekkel egyszerűbbé tehetjük a programunkat, mert így elkerülhetjük a kódkészítés ismétlését. A függvényeket használhatjuk bármilyen programozási feladat megoldására. Nagyon fontos, hogy a függvény neve beszédes és érthető legyen, és a függvény egyszerre csak egy dolgot csináljon.

A „def” kulcsszó használatával új függvényeket hozhatunk létre a programunkban, amelyeknek különböző bemenő paramétereik és visszatérési értékeik lehetnek.

Példák lépésenként

				
					def eljaras(): #Egy függvényt mindig definiálni kell
  print("Nincs visszateréséri érték")
				
			

A def eljaras(): sorral kezdődő kód egy egyszerű eljárás definíciót mutat Pythonban, amelynek nincs visszatérési értéke, csak kinyomtat egy szöveget a konzolra.

				
					eljaras() #így lehet behíni
				
			
				
					Nincs visszateréséri érték
				
			
				
					def fgv():
  print("függvény törzse")
  visszateresi_ertek = 10
  return visszateresi_ertek
				
			

A fgv nevű függvény a print() függvénnyel kiírja a „függvény törzse” szöveget a konzolra, majd definiál egy visszateresi_ertek változót, amelynek értéke 10. Végül visszatér ezzel az értékkel. A függvény hívása esetén az így visszatérő értéket eltárolhatjuk egy változóban, vagy közvetlenül felhasználhatjuk a kódban.

				
					print(fgv())
				
			
				
					függvény törzse
10
				
			
				
					def fgv2():
  print("törzs")
  v1 = 10
  v2 = 20
  return [v1, v2]
				
			

A fgv2 nevű függvény a print() függvénnyel kiírja a „törzs” szöveget a konzolra, majd két változót (v1 és v2) definiál, amelyeknek az értékei rendre 10 és 20. Végül visszatér egy listával, amelyben az előbb említett két változó szerepel.

				
					print(fgv2())
				
			
				
					törzs
[10, 20]
				
			
				
					def fgv3(p):
  print(f'paraméter: {p}')
  return p*2
				
			

A fgv3 nevű függvény egy kötelezően megadandó paramétert (p) kap, majd kiírja annak értékét. Végül visszatér a paraméter kétszeresével. A függvény akkor használható, ha megadjuk neki a kötelező paramétert a hívás során.

				
					fgv3(10)
				
			
				
					paraméter: 10
20
				
			
				
					def fgv4(p = 10):
  print(f'paraméter: {p}')
  return p*2
				
			

A fgv4 nevű függvény egy opcionális paramétert (p) kap, amelynek alapértéke 10. A függvény kiírja a paraméter értékét a konzolra, majd visszatér a paraméter kétszeresével. Ha a függvényt hívásakor nem adunk meg paramétert, akkor az alapérték (10) lesz használva.

				
					print(fgv4())
print(fgv4(15)) #Paraméter felül lesz írva
				
			
				
					paraméter: 10
20
paraméter: 15
30
				
			
				
					def fgv6(p):
  print(f'paraméter: {p}')
  p[0] = p[0] + 1
				
			

A fgv6 nevű függvény egy listát kap paraméterként, majd kiírja annak értékét. Ezután megváltoztatja a lista első elemét, majd nem ad vissza semmilyen értéket. Mivel a függvény az eredeti lista első elemét változtatja meg, az eredeti lista értéke is megváltozik, amikor ezt a függvényt meghívják.

				
					x=[0]
print(f'x értéke hívás előtt: {x}')
fgv6(x)
print(f'x értéke hívás után: {x}')
				
			
				
					x értéke hívás előtt: [0]
paraméter: [0]
x értéke hívás után: [1]
				
			

Első eleme 0. Ezután kiírja az x értékét a konzolra. Az fgv6 függvényt az x listával hívják meg, amelynek eredményeként a függvény megváltoztatja az x lista első elemét. Ezután kiírja az x értékét a konzolra újra, és látható, hogy az értéke megváltozott a függvényhívás után, mert a függvény megváltoztatta az eredeti listát. A függvény nem ad vissza értéket, ezért az eredmény None lesz.

				
					def fgv7(p1, p2):
  print(f'p1 = {p1}')
  print(f'p2 = {p2}')
  return p1 * p2
				
			

A fgv7 nevű függvény két paramétert (p1 és p2) kap, majd kiírja a konzolra az értéküket, majd visszatér a két paraméter szorzatával.

				
					e1 = fgv7(10, 20)
print(e1)
print(fgv7(20,4))
				
			
				
					p1 = 10
p2 = 20
200
p1 = 20
p2 = 4
80
				
			
				
					def fgv3(p):
  print(f'paraméter: {p}')
  return p*2
				
			

A függvény egy egész számot kap paraméterként, majd visszatérési értékként igazat ad vissza, ha a szám páratlan, hamisat ha a szám páros.

				
					for i in range(1, 10):
    if paratlan(i):
      print(i, end =' ')
				
			
				
					1 3 5 7 9
				
			

Szökőév

Ez a kód a felhasználó által megadott két évszám közötti szökőéveket listázza ki. A szokoev() függvény megállapítja, hogy egy év szökőév-e, míg az utána következő rész az adott évszámokra vonatkozóan hívja meg a szokoev() függvényt, majd kiírja a szökőéveket.

				
					def szokoev(ev):
  return ev % 400 == 0 or ev % 4 == 0 and ev % 100 !=0

a = int(input('Kérem a kezdőévet: '))
b = int(input('Kérem a másik évszámot: '))
if a>b:
  a,b=b,a # a nagyobbra cseréli
sze = [e for e in range(a, b + 1) if szokoev(e)]
if len(sze) !=0:
  print('Szökőévek: ', *sze, sep="; ")
else:
  print('Nincs szökőév a megadott tartományban')
				
			
				
					Kérem a kezdőévet: 1222
Kérem a másik évszámot: 2333
Szökőévek: ; 1224; 1228; 1232; 1236; 1240; 1244; 1248; 1252; 1256; 1260; 1264; 1268; 1272; 1276; 1280; 1284; 1288; 1292; 1296; 1304; 1308; 1312; 1316; 1320; 1324; 1328; 1332; 1336; 1340; 1344; 1348; 1352; 1356; 1360; 1364; 1368; 1372; 1376; 1380; 1384; 1388; 1392; 1396; 1404; 1408; 1412; 1416; 1420; 1424; 1428; 1432; 1436; 1440; 1444; 1448; 1452; 1456; 1460; 1464; 1468; 1472; 1476; 1480; 1484; 1488; 1492; 1496; 1504; 1508; 1512; 1516; 1520; 1524; 1528; 1532; 1536; 1540; 1544; 1548; 1552; 1556; 1560; 1564; 1568; 1572; 1576; 1580; 1584; 1588; 1592; 1596; 1600; 1604; 1608; 1612; 1616; 1620; 1624; 1628; 1632; 1636; 1640; 1644; 1648; 1652; 1656; 1660; 1664; 1668; 1672; 1676; 1680; 1684; 1688; 1692; 1696; 1704; 1708; 1712; 1716; 1720; 1724; 1728; 1732; 1736; 1740; 1744; 1748; 1752; 1756; 1760; 1764; 1768; 1772; 1776; 1780; 1784; 1788; 1792; 1796; 1804; 1808; 1812; 1816; 1820; 1824; 1828; 1832; 1836; 1840; 1844; 1848; 1852; 1856; 1860; 1864; 1868; 1872; 1876; 1880; 1884; 1888; 1892; 1896; 1904; 1908; 1912; 1916; 1920; 1924; 1928; 1932; 1936; 1940; 1944; 1948; 1952; 1956; 1960; 1964; 1968; 1972; 1976; 1980; 1984; 1988; 1992; 1996; 2000; 2004; 2008; 2012; 2016; 2020; 2024; 2028; 2032; 2036; 2040; 2044; 2048; 2052; 2056; 2060; 2064; 2068; 2072; 2076; 2080; 2084; 2088; 2092; 2096; 2104; 2108; 2112; 2116; 2120; 2124; 2128; 2132; 2136; 2140; 2144; 2148; 2152; 2156; 2160; 2164; 2168; 2172; 2176; 2180; 2184; 2188; 2192; 2196; 2204; 2208; 2212; 2216; 2220; 2224; 2228; 2232; 2236; 2240; 2244; 2248; 2252; 2256; 2260; 2264; 2268; 2272; 2276; 2280; 2284; 2288; 2292; 2296; 2304; 2308; 2312; 2316; 2320; 2324; 2328; 2332
				
			

Másképpen:

				
					def szokoev(ev):
    if (ev % 400 == 0):
        return True
    if (ev % 4 == 0 and ev % 100 != 0):
        return True
    return False
				
			
  • Az első feltételvizsgálat (ev % 400 == 0) azt ellenőrzi, hogy az év osztható-e 400-zal. Ha igen, akkor szökőévnek tekintjük, és a függvény True értékkel tér vissza.
  • Ha az első feltétel nem teljesül, a következő feltételvizsgálat következik (ev % 4 == 0 and ev % 100 != 0). Ez ellenőrzi, hogy az év osztható-e 4-gyel és nem osztható 100-zal. Ha mindkét feltétel igaz, akkor szintén szökőévnek tekintjük az évet, és a függvény True értékkel tér vissza.
  • Ha egyik feltétel sem teljesül, akkor az év nem szökőév, és a függvény False értékkel tér vissza.
				
					def feladat():
    ev1 = int(input('Kérem az egyik évszámot: '))
    ev2 = int(input('Kérem a másik évszámot: '))
    if (ev1 < ev2):
        tol = ev1
        ig = ev2
    else:
        tol = ev2
        ig = ev1

				
			
  • A következő két sorban bekérjük a felhasználótól az évszámokat, ev1-et és ev2-t.
  • A if szerkezet eldönti, hogy melyik évszám a kisebb és melyik a nagyobb. A kisebb évszám kerül az ev1 változóba, a nagyobb pedig az ev2 változóba. Ez biztosítja, hogy helyesen definiáljuk a tartományt, amelyet később végig fogunk iterálni.
				
					szokoevek = []
for ev in range(tol, ig + 1):
    if szokoev(ev):
        szokoevek.append(ev)
				
			
  • Egy üres listát, szokoevek-et hozunk létre, amelyben tárolni fogjuk a szökőéveket.
  • Egy for ciklussal végigiterálunk a tol és ig közötti értékeken (beleértve mindkét végpontot is).
  • Minden iterációban meghívjuk a szokoev függvényt az adott évszámra, és ha az eredmény True, hozzáadjuk az évszámot a szokoevek listához.
				
					    if (len(szokoevek) == 0):
        print('Nincs szökőév a megadott tartományban!')
    else:
        str = 'Szökőévek: ' 
        for ev in szokoevek:
           str += '{0}; '.format(ev)
        print(str[:-2])
				
			
  • A következő if-else szerkezetben ellenőrizzük, hogy van-e szökőév a megadott tartományban.
  • Ha a szokoevek lista hossza 0, akkor kiírjuk, hogy nincs szökőév a megadott tartományban.
  • Ellenkező esetben elkészítjük a szökőévek listájának szöveges reprezentációját. Az str változóban tároljuk a kezdeti szöveget, majd a for ciklussal végigiterálunk a szokoevek listán, és hozzáfűzzük az évszámot a szöveghez.
  • Végül kiírjuk a szöveget, figyelve arra, hogy az utolsó szökőév utáni pontosvesszőt és szóközt ne írjuk ki (str[:-2]).

Teljes kód:

				
					def szokoev(ev):
    if (ev % 400 == 0):
        return True
    if (ev % 4 == 0 and ev % 100 != 0):
        return True
    return False

def feladat():
    ev1 = int(input('Kérem az egyik évszámot: '))
    ev2 = int(input('Kérem az másik évszámot: '))
    if (ev1 < ev2):
        tol = ev1
        ig = ev2
    else:
        tol = ev2
        ig = ev1

    szokoevek = []
    for ev in range(tol, ig + 1):
        if szokoev(ev):
            szokoevek.append(ev)
    
    if (len(szokoevek) == 0):
        print('Nincs szökőév a megadott tartományban!')
    else:
        str = 'Szökőévek: ' 
        for ev in szokoevek:
           str += '{0}; '.format(ev)
        print(str[:-2])
				
			

Leave a Comment

Megosztom ezt a leírást
Tartalom