Informatika2-2014/Eloadas Python

A MathWikiből
(Változatok közti eltérés)
178. sor: 178. sor:
 
  0  1  2  3  4  5
 
  0  1  2  3  4  5
 
-5  -4  -3  -2  -1
 
-5  -4  -3  -2  -1
<bash>
+
</bash>
  
 
=== Listák ===
 
=== Listák ===

A lap 2014. február 11., 22:41-kori változata

Tartalomjegyzék

Bevezetés a Python nyelvbe

Az előadáshoz elsőszámú olvasmány a Python tutorial.

A Pythont ismerjük a Sage-ből. Különbségek:

  • ^ helyett ∗∗, / osztást, // egészosztást jelöl.
  • [a..b] helyett range(a,b), vagy xrange(a,b)
  • A megszokott, beépített matematikai függvények hiányoznak (find_root, plot, is_prime), de különböző modulokban sokuk megtalálható.
  • Nincsenek szimbolikus változók

A Python egy olyan általános körben használható magas szintű programozási nyelv, aminek az egyik alapelve az olvasható kód írása egy nagyon tiszta szintaxis használatával. 1991-ben alkotta meg Guido Van Rossum.

További jellemzők

  • objektum orientált, procedurális, funkcionális
  • sok beépített modul a fejlesztés megkönnyítésére
  • dinamikus típus kezelés
  • automatikus memóriakezelés
  • többféle megvalósítás (CPython, Jython, IronPython, PyPy, Python for S60)
  • open-source a főbb platformokra
  • sokkal tömörebb sok más nyelvnél

Nevét a Monthy Python ihlette, nem az állat.

Filozófiája megkapható a 'this' modul betöltésével:

 import this


Python kód futtatása

Interaktív módon

Egyszerűen a python parancs terminálból indítva:

$ python
Python 2.7.5+ (default, Sep 19 2013, 13:48:49) 
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

Fájlból

  • Nyiss egy új file-t pl. a gedit-ben, mentsd el "kerdez.py" néven egy könyvtáradba!
  • Írd bele a következő python kódot (ne használj ékezeteket):
s = input("Mondj egy szamot: ")
print "Ennel eggyel kisebbet mondtal: ", str(s + 1)
  • Mentsd el, és futtasd a scriptedet! (python kerdez.py)
  • Most kicsit kiegészítjük a scriptet, hogy tartalmazhasson ékezetes betűket, és hogy kényelmesebben futtatható legyen (a python parancs begépelése nélkül is):
#!/usr/bin/python
#coding=UTF-8
s = input("Mondj egy számot: ")
print "Ennél eggyel kisebbet mondtál: ", str(s + 1)
  • Mentsd el, és adj rá futtatási jogot csak magadnak (chmod +x kerdez.py)!
  • Futtasd így: kerdez.py vagy így: ./kerdez.py
  • A kód második sora lehet ez is:
# -*- coding: utf-8 -*-

Argumantum átadása

#!/usr/bin/env python
#coding=utf-8
# Összead tetszőleges számú számot
import sys  # modul a rendszerfüggő információkhoz
 
osszeg = sum(float(arg) for arg in sys.argv[1:])
print 'Összeg =', osszeg

Ha e fájl az osszeg.py nevű fájlba van mentve, akkor

$ ./osszeg.py 12 23.5 1
36.5

Kódolás stílusa

Stílus (code style) a PEP 8 alapján

  • használj mindig 4 space-t minden egyes szinthez, de a folytatósort kezd még beljebb,
  • a nagyobb kódrészeket tagold üres sorokkal (függvény, osztály, nagyobb kód blokk)
  • használj space-t a vesző után és a legmagasabb szinten lévő operátorok körül
  • használj docstring-et és ahol lehet a megjegyzés a saját sorára vonatkozzon, vagy azonos mértékben behúzva arra a blokkódra
  • ahol lehet használj ASCII karakterkódolást
  • 79 karakternél ne legyen hosszabb egy sor
  • CamelCase elnevezési konvenciót kövesse az osztályok neve és lower_case_with_underscores a függvények és változók nevei

Érdemes megnézni a Google python code style ajánlását is.

Docstring

A hivatkozás nélküli string elemet szokás használni megjegyzések írására és dokumentálásra.

"""This is a class of example.
 
TODO: needs implementation.
"""

Első sort nagybetűvel kezdjük és pontal zárjuk. Egy összefoglaló mondat legyen. Majd egy üres sort hagyva részletesen leírhatunk minden funkciót amit az osztály vagy függvény tartalmaz. Megadhatjuk, hogy a függvény bizonyos hívásaira mi legyen a válasz,

Hasznos linkek:

#coding=utf-8
def lnko(a, b):
    """Kiszámolja két szám legnagyobb közös osztóját.
 
    >>> lnko(36, 8)
    4
    >>> lnko(-36, 4)
    4
    >>> lnko(3, 0)
    3
    """
 
    a, b = abs(a), abs(b)
    while a != 0:
        a, b = b%a, a
    return b
 
if __name__ == "__main__":
    import doctest
    doctest.testmod()

Ha lnko.py a neve, akkor egy

python lnko.py

parancs után nem kapunk semmit, azonban a -v opciót is használva látjuk a részleteket is:

$ python lnko.py -v
Trying:
    lnko(36, 8)
Expecting:
    4
ok
Trying:
    lnko(-36, 4)
Expecting:
    4
ok
Trying:
    lnko(3, 0)
Expecting:
    3
ok
1 items had no tests:
    __main__
1 items passed all tests:
   3 tests in __main__.lnko
3 tests in 2 items.
3 passed and 0 failed.
Test passed.


Python, mint számológép

Számok

 +---+---+---+---+---+
 | S | z | i | t | a |
 +---+---+---+---+---+
 0   1   2   3   4   5
-5  -4  -3  -2  -1

Listák

Vezérlő utasítások

Adatstruktúrák

Személyes eszközök