Python tanfolyam Python bevezető I. rész
Mai tematika Amiről szó lesz (most): Interpretált vs. fordított nyelvek, GC Szintakszis Alaptípusok Control flow: szekvencia, szelekció, iteráció... Függvények Modulok használata Fájlkezelés
Python A Python Interpretált nyelv Egyszerűen használható, mégis valódi programnyelv Tömör és kifejező Könnyen kiterjeszthető
Fordított nyelvek - ismétlés Forrás: http://www3.ntu.edu.sg/home/ehchua/programming/cpp/images/gcc_compilationproc ess.png
Interpretált nyelvek Nincs szükség fordításra gyorsabb fejl. A programot az ún. Interpreter futtatja Lassabbak mint a fordított nyelvek Sorról-sorra fordít
Python interpreter Köztes nyelvre fordítás bytecode bytecode interpreter Kód megváltoztatása után első futtatáskor újra fordít *.py *.pyc Python és python3 CLI demo Interpreter indítása interaktív módban Parancsok átadása
Szintaktika Blokkok helyett indentálás 4 szóköz / 1 tab Nem lehet keverni! Kettőspont!!! Demo: module1.py Kommentek: # a sor elején
Egyszerű adattípusok Mind immutable Int & float //, ** Interaktív módban utolsó eredmény változója: _ int(), float() Boolean True / False
Összetett adattípusok String List: [,] Tuple: (,) Dictionary: { key1 : value1,} Egy részük immutable, vagy van immutable párjuk
String Immutable str() ', '', '''''' használata Escape-elés, raw string Többsoros ( a b c ) s[:i] + s[i:] = s Beolvasás: input( string to print )
String 2 Konkatenálás: + Ismétlés: * Demo: "ba" + 2 * "la" + "jka" len(), split(), strip(), join() Subscription: Demo: string_subscription.py Hogyan kell visszafelé, minden második karaktert kiírni?
List Jele: [] Mutable append() metódus Demo: lista létrehozás, indexelés, slicing
Tuple Jele: () Immutable Demo: tuple létrehozás, indexelés, slicing
Dictionary Jele: d = { key : value } Értékadás: d[ key ] = other value Mutable Map-nek is hívják keys() Demo: dictionary létrehozás, indexelés, slicing
Ciklusok - for range(): visszaad egy objektumot, amin lehet iterálni range(stop) range(10): 0-tól 9-ig az összes egész Demo sum1.py sum2.py range.py
Ciklusok - while Amíg a feltétel igaz Demo: fibonacci.py Forrás: http://docs.python.org/3/tutorial/introduction.html
Elágazások Új blokkot nyitnak indentálni kell (célszerű) If, elif, else Használhatjuk a feltétel igazság tartalmát (nem kell mindig == True, ) in operator: if a in (1, 2, b, a ): pass Demo: elagazas.py
List comprehension Általános dolog Egy lista egy másik lista egy kicsit átgyúrva Egy lista egy másik lista elemeinek részhalmaza LC: tegyük ezt a műveletet könyebbé Szerkezet: [f(i) for if...] Példa: írjuk ki kettő első 11 egész hatványát print([2**i for i in range(11)])
List comprehension 2 Alkalmazzunk egy függvényt minden elemre Egy lista minden elemén hívjunk meg egy metódust Gyűjtsük ki egy lista adott tulajdonságokkal rendelkező elemeit
Feladatok Számok négyzete 1-10-ig Páros számok négyzete 1-10-ig Adott M, egy n*n-es mátrix (és n). Transzponáld M-et. Minden fenti feladatot egy sorban is meg lehet oldani, list comprehensionnel. Írd ki 2014 és 3014 között az összes olyan számot, ami osztható 5-el, de 7-el nem. Írf fv-t, ami a bementeként kapott számnak kiszámolja a faktoriálisát.
Függvények Ezek is objektumok A paramétereik kaphatnak default értéket A default értékű argumentumok csak egyszer értékelődnek ki Keyword argumentumok Ha explicit megmondjuk minek adunk értéket, a paraméterek sorrendje sem számít *, ** paraméterek Packing, unpacking Demo: function.py
Lambda függvények Névtelen, egy utasításos függvények Használjuk: Egyszer használatos, rövid függvények Más függvények paramétereként átadhatók (pl. egy lista minden elemére alkalmazzuk a lambda fv-t) Demo: lambda.py
Modulok Python definíciókat tartalmazhat (pl. függvények, osztályok, globális változók) A modulokat az import szóval lehet importálni, ekkor a modulban lévő definíciók a modulnev.definicio alakban érhetők el (lásd math.sqrt() fv.) Az egyes definíciók közvetlenül is importálhatók: from math import sqrt sqrt(2) A modul neve a modulon belül megtudható a name globális változóból Néhány standard modul: os, sys, re
Modulok 2 A modulok futtathatók is: Demo: module1.py python3 module1.py
Fájlműveletek Fájl megnyitása: f = open( fajlnev, mod) mod := r vagy w A fájlnév lehet relatív vagy abszolút Használat után le kell zárni: f.close() with statement Demo: fileops.py
Fájlműveletek 2 Egyéb fontos műveletek: read() readline(), readlines() write(str), writelines(sequence)