Itt jársz most: Kezdőlap > Alkalmazásfejlesztés > Python - Bevezetés

Szűrő megjelenítése

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()
Kommentek

Komment írásához jelentkezz be
Bejelentkezés

Még senki nem szólt hozzá ehhez a bejegyzéshez.