Keresés tartalomra
Kategóriák
Címkék
- Java
- Spring
- Python
- IoC
- Android
- DI
- Dagger
- Thymeleaf
- Markdown
- JDK11
- AOP
- Aspect
- Captcha
- I18n
- JavaSpark
- Microframework
- Testing
- JUnit
- Security
- JWT
- REST
- Database
- JPA
- Gépház
- WebFlux
- ReactiveProgramming
- Microservices
- Continuous Integration
- CircleCI
- Deployment Pipeline
- Docker
- Mocking
- LogProcessing
- PlantUML
- UML
- Modellezés
- OAuth2
- Node.js
- DevOps
- Websocket
Python - Bevezetés
Python programozásról szóló cikksorozatom kezdeteként szeretném bemutatni nektek a nyelvet általánosságban. A Python egy nemtípusos, általános célú scriptnyelv. Előnye, hogy villámgyorsan tudunk vele kódolni, nyelvezete nagyon egyszerű, és átlátható, használata könnyen elsajátítható. Fejlesztése folyamatos, jelen pillanatban a 2.7-es verzió az ajánlott, stabil, elterjedt kiadás, de létezik már mellette a 3.0-s is, amely azonban nem teljesen kompatibilis a korábbi verziókkal, némileg eltér azoktól. A folyamatos fejlesztésnek azonban megvan az a vitathatatlan előnye, hogy bár maga a nyelv nagyon egyszerűnek (mondhatni primitívnek) tűnik, mégis megtalálhatóak benne objektumorientált, és kivételkezelő eszközök is. Fontos még megemlíteni, hogy beépítve ismer néhány magas szintű adatszerkezetet is, például a listát. Végül még egy megjegyzés, lévén scriptnyelv, interpreter végzi az azonnali futtatást, fordításra nincs szükség.
Linux disztribúciók alatt az interpreter és az úgynevezett Python shell (parancssoros interpreter) a rendszer részeként jelen van. Ám szerencsére, ha Windows alatt szeretnénk Python programozásra adni fejünket, akkor sincs probléma, elérhető az interpreter Windows-os változata is. Az interpreter telepítése után scriptjeink futtathatóak a nevükön való dupla kattintással, vagy parancssorból a nevük begépelésével.
Vitathatatlan előnyei mellett természetesen rendelkezik hátrányokkal is a nyelv. Aki C alapú nyelvekről tér át Python programozásra, szembesülhet azzal a kényelmetlen ténnyel, hogy a Pythonban nincsenek blokkok. Semmilyen módon nem jelölhetünk blokkhatárokat programunkban, sem függvényeknél, sem elágaztató utasításokban, sem iterációkban. Ehelyett az úgynevezett indentálás módszere áll rendelkezésükre: a „blokkhatárokat” aszerint határozza meg a nyelv, hogy mekkora behúzást használunk. Négy szóköz karakter használata ajánlott egy indentálási szint létrehozásához, de ez természetesen tetszőleges lehet, vagy tabulátor is megfelelő akár. Másik hátránya a nemtípusossága, ami persze sok más scriptnyelvet is jellemez, de emiatt személy szerint tanulónyelvként nem tudnám ajánlani, mivel elszoktatja az embert a változók deklarációjától. Az indentálás pedig a blokkok használatától. Amire még oda kell figyelnünk, hogy a sorvégeket csak az újsor karakter jelöli, nincs kitüntetett szeparátorkarakter. Továbbá lényeges az is, szintén azok számára, akik C alapú nyelvekről térnek át Python-ra, hogy a Python nem ismeri az azokból ismert rövid inkrementáló és dekrementáló utasításokat, tehát például az i++
utasítás nem fog működni, helyette az alábbi módszert kell használnunk: i += 1.
Nos, csak hogy lássunk valami konkrétat is, írnék még néhány szót az eszközeiről. Mint minden nyelvben, a két legfontosabb eszköz a felhasználónak történő visszajelzést és a felhasználótól való adatbekérést biztosító eszközök. Ezek a Pythonban a print "..."
utasítás és a raw_input(…)
függvény. Utóbbi paramétereként megadható egy szöveg, amely megjelenik a képernyőn, visszatérése pedig string, melyből konverzióval készíthetünk egész (int(…) függvény
) vagy lebegőpontos (float(…)
függvény) számot. (Megjegyzés: stringgé az str(…)
függvény segítségével konvertálhatunk.) Bár változóinkat nem kell deklarálnunk, az első hozzáférés előtt inicializálnunk kell őket (értelemszerűen nem létező változó értékéhez nem férhetünk hozzá). Függvényeink deklarációja a def kulcsszó, majd őt követően a függvény nevének és formális paraméterlistájának megadásával történik. A függvénytörzs kezdetét kettőspont jelzi (ez igaz lesz az iterációkra és az elágaztatásokra is).
Elágaztatásokra csak az if…elif…else
utasítás-együttes használható, nem tartalmaz a nyelv switch elágaztatást. Iterációt for
és while
utasításokkal készíthetünk. A Pythonban a for ciklus előírt lépésszámú, tartományát a range(, , )
utasítással adhatjuk meg, amely egy listát készít a megadott paraméterei alapján. Ekkor a ciklus futásának idejére ténylegesen létrejön egy lista, az xrange
használatával viszont mindig csak az aktuális elem található a memóriában, ez nagy elemszámú listák esetén lényeges. Amennyiben csökkenő sorrendű iterációra van szükségünk, a paraméter legyen nagyobb, mint az , a lépésköz pedig negatív. (Megjegyzés: az értéke már nincs benne a tartományban.) Érdekessége, hogy tetszőleges tartalmú listákat is bejárhatunk vele, így hasonlóképp működik, mint a foreach
utasítás a tömbökön más nyelvekben.
A nyelv számtalan beépített függvénye mellett a listák, és a stringek – mivel objektumokként viselkednek - kezelése metódusokkal történik, melyeket a pont operátorral minősítünk. Ezekre én jelen cikk kereti között nem szeretnék kitérni, érdemes olvasgatni a dokumentációt. Üres utasításnak a pass kulcsszó használható, ez akkor lehet hasznos, ha tudjuk, hogy szükségünk lesz egy bizonyos függvényre, de törzsének megírásával egyelőre nem akarunk foglalkozni. Apróságok ugyan, de fontos megjegyezni, hogy kommenteket a # karakterrel kezdve helyezhetünk el a kódban, a null
érték megfelelője pedig a None
Minden script elején el kell helyeznünk egy direktívát, mely azt mondja meg, milyen interpreternek kell végeznie a futtatást. Ez minden esetben a következő: #!/usr/bin/env python
. Ha pedig ékezetes karaktereket is használni szeretnénk a scriptben, akkor rögtön ezután meg kell adnunk a következő speciális kommentet is: # coding: utf-8
.
Nos, ennyit szerettem volna kezdésképp írni a Pythonról, még a cikk alján található egy példaforrás, amit érdemes nézegetni. Ha pedig felkeltette az érdeklődésed a nyelv, mindenképp ajánlott a hivatalos dokumentáció olvasgatása, illetve kommentekben is szívesen válaszolok a kérdésekre.
#!/usr/bin/env python
# coding: utf-8
# ha ezt importáljuk, segítségével hozzáférhetünk a parancssori argumentumokhoz, illetve
# további információkhoz a rendszerről
import sys
def ures_fv():
pass
def main():
# integer, float és string változók deklarációja:
a = 5
b = 3.2
c = "Python"
# kiírás; fontos: az első módszernél a számokat előbb stringgé kell konvertálnunk!
print "Int szam " + str(a) + "; float szam " + str(b) + "; string " + c
print "Int szam", a, "; float szam", b, "string ", c
print "Int szam {}; float szam {}; string {}".format(a, b, c)
print "Int szam {0}; float szam {1}; string {2}".format(a, b, c)
print "Int szam {adat_a}; float szam {adat_b}; string {adat_c}".format(adat_a=a, adat_b=b, adat_c=c)
# üres és feltöltött listák deklarációja (tartalmuk vegyes is lehet):
lista1 = []
lista2 = [1, 6, 2, 9]
vegyes_lista = [3, 2.0, "python"]
# for iterációk
for i in vegyes_lista:
print i
for j in range(0, 10):
print j
for k in range(10, 0, -2):
print k
# while iteráció
l = 10
while l > 0:
print l
l -= 1
# feltételes elágaztatás
szam = int(raw_input("Kérek egy egész számot 1 és 5 között: "))
if szam == 1:
print "Elégtelen"
elif szam == 2:
print "Elégséges"
elif szam == 3:
print "Közepes"
elif szam == 4:
print "Jó"
else:
print "Jeles"
if (szam == 5) or (szam == 1):
print "Szélsőséges!"
# függvényhívások
string_muveletek(c)
lista_muveletek(vegyes_lista)
parancssori_arg()
ures_fv()
def string_muveletek(string):
# szeletek
print string[1:3]
# hossz megállapítása
print len(string)
def lista_muveletek(lista):
# műveletei hasonlóak, mint a stringekéi
# lista bővítése
lista.append(11)
#eltávolítás a listából
lista.remove(11)
# annak megállapítása, hogy egy benne van-e a listában
elem = int(raw_input("Elem: "))
if elem in lista:
print "Benne van"
else:
print "Nincs benne"
# rendezés
a = [5, 3, 9, 1, 4, 2, 7]
# az eredeti lista nem változik, visszatérése egy új, rendezett lista:
print sorted(a)
print a
# az eredeti listát helyben rendezi:
a.sort()
print a
def parancssori_arg():
# parancssori argumentumok elérése
print sys.argv
# a első elem elérése
print sys.argv[0]
# számuk megállapítása:
print len(sys.argv)
# erre az utasításra a modulok miatt van szükségg, erről később fogok írni
if __name__ == "__main__":
main()
Komment írásához jelentkezz be
Bejelentkezés
Még senki nem szólt hozzá ehhez a bejegyzéshez.