2019. január 12., szombat

Python nyelv alapjai 3 verzió (win)

A Python egy interpreteres programnyelv.
Nyelvről: https://hu.wikipedia.org/wiki/Python_(programoz%C3%A1si_nyelv)


Telepítése :
A letöltött (https://www.python.org/downloads/) instal futtatásával vagy a zip állomány megfelelő könyvtárba kicsomagolásával történik.


A disztribúciók 
Ezek kibővítik a funkcionalitást és kezelést segítő funkciókat tartalmaznak:
Anaconda, miniconda, ...


python verziok (3)


3.7 2017-05-08

3.6 2016-12-23

3.5 2015-09-13

3.4 2014-03-17

3.3 2012-09-29

3.2 2011-02-20

3.1 2009-06-26

3.0 2008-12-03




Speciális python nyelvek:
    Jython (http://www.jython.org/)
    PyPy (http://pypy.org/)
   CPython (http://python.org/)
   IronPython (http://ironpython.net/)




Pár népszerű python csomag.

 - Numpy ("Numerical Python"). A nyelv kiterjesztése többdimenziós mátrixok hatékony kezelésével. A többi csomag alapját képzi.
 - SciPy ("Scientific Python"). Numpy csomagra épülő, numerikus számítási algoritmusokat tartalmazó csomag.
 - MatPlotLib. Numpy csomagra épülő, diagramrajzoló és vizualizációs csomag.
 - IPython ("Interactive Python"). Python parancssori képességeinek nagyfokú bővítése. Matlab-szerű prototípus készítés érhető el a segítségével.
 - Scikit-image. SciPy kiterjesztése további képfeldolgozó műveletekkel.
 - Mahotas. Számítógépes látás algoritmusok.
 - Pillow. Számos képformátum betöltése és képek feldolgozása.
 - Pandas. Adatmanipulációhoz és elemzéshez, magasszintű hozzáférést biztosít táblázatba rendezett adatokhoz. Numpy csomagra épül, de célszerű a SciPy és MatPlotLib csomagok telepítése is.


Több komplex C++ függvénykönyvtár is rendelkezik Python használat támogatással.

 - OpenCV. Képfeldolgozó és számítógépes látás algoritmusok.
 - SimpleITK. Az Insight Toolkit (ITK) egyszerűsített interfésze. Az ITK de-facto szabványnak számít a 3D orvosi képek szegmentálási és regisztrációs algoritmusainál.
 - VTK ("Visualzation Toolkit"). Inkább 3D számítógépes grafikai csomag, de feladatai közé tartozik a képek vizualizációja és egyszerűbb feldolgozása is.

Több képfeldolgozó és modellező program a Python nyelven keresztül teszi lehetővé a funkcióinak bővítését.

 - GIMP ("GNU Image Manipulation"). Ingyenes képmanipulációs program, a PhotoShop alternatívája.
 - Blender. Ingyenes 3D modellező és animációs program.
 - 3D Slicer. 3D orvosi képmegjelenítő és foldolgozó szoftver.


Modulok csomagok telepítése Windows rendszeren 

Csomagok telepítésére a Python pip segédprogramja használható. Ez egy központi (interneten levő) repozitóriumban ellenőrzi a csomag elérhetőségét, és a telepített Python verzióhoz legalkalmasabb csomagot telepíti. 
Problémát okozhat viszont, hogy néhány csomag csak forráskód szinten érhető el itt, ezeket pedig megpróbálja lefordítani, és ha a fordítási környezet beállítása nem megfelelő, akkor hibaüzenetet kapunk. Az ehhez szükséges fordítási környezet konfigurációja nem feltétlenül egyszerű, ezért ekkor inkább töltsünk le egy bináris csomagot, és telepítsük azt helyette (lásd a whl telepítés részben).

PIP telepítés

A pip ellenőrzi a függőségeket is, és azokat próbálja telepíteni először. Előfordulhat, hogy a telepítés egy másik, függő csomag miatt lesz sikertelen, így figyeljük a hibaüzenetet és a megfelelő csomagot telepítsük bináris csomagból!

pip használat
Nyissunk parancssort és lépjünk be a Python mappába. A Python-t nem kell elindítani!Telepítés indítása például az ipython csomag esetén:

Scripts\pip.exe install ipython
Egy csomag eltávolítása az uninstall opcióval megy:
Scripts\pip.exe uninstall ipython

Whl telepítés


A whl (wheel) kiterjesztésű csomagok az adott rendszerre binárisan elérhető csomagokat jelentik. Ezeket akkor célszerű használni, ha a pip nem ilyet talál és fordítani próbál, rendszerint sikertelenül.

Keressünk elérhető bináris csomagot a Interneten! 

Figyeljünk arra, hogy a Python verziószám és a 32 vagy 64 bitesség egyezzen a telepített verzióval!
Windows esetén indulhatunk az alábbi oldalról: Unofficial Windows Binaries for Python Extension Packages.
Telepítés: Scripts\pip.exe install "Elérési útvonal\csomag.whl"

A szükséges csomagok közül jelenleg a numpy+mkl, a SciPy és az OpenCV igényel whl telepítést.




A python.exe -vel indítható el a conzol alkalmazás.

Modulok telepítés:
python -m pip install -U pip                     ///// ezt csak egyszer
python -m ensurepip --default-pip           ////   ezt csak egyszer

python -m pip install matplotlib               // plotter modul telepítése
python -m pip install numpy                   // ...

--- A telepített modulok a szimbólumtáblázatba kerülnek be

A telepítés helyességéről a python konzolablakból meghívással  :
-- 1. Használatba vétel hibamentes
>>> import matplotlib

-- 2. Modul listában (szimbólumtáblázatba) benne van-e a help szerint:
>>>help('modules')

--- 3. Modullista kilistázása pyton programból:
>>>import sys as s
>>>s.modules.keys()


Érdekességek/próbáld ki a konzol ablakban:
import antigravity
import this
import __hello__


A py program állomány meghívása:
Szovegszerkesztővel megírt és .py kiterjesztéssel elmentet file futtatása:
c:\Miniconda3\python.exe c:\kl\_oktatas\python\mintak\alap_web_json_fenykep.py


Minta :
py program konzolban:
>>>import math
>>>b=math.e**(1*math.pi)
>>>print ('{0:.2f}+ {1:.2f}'.format(b.real, b.imag) )

py állományban (pelda01.py):
import math
b=math.e**(1*math.pi) 
print ('{0:.2f}+ {1:.2f}'.format(b.real, b.imag) )

Használat:
c:\Miniconda3\python.exe c:\kl\_oktatas\python\mintak\pelda01.py

Eredménye (mindkettőnek):
23.14+ 0.00




Python nyelvtani elemek (konzolban):
Értékadás:
>>> pi = 3.14159
>>> nev ='Lajos'
>>>szin_lista=['kek', 'zold', 'sarga','barna']

Kiíratás
>>> print(szin_lista[1])
zold

>>> print(nev[::-1])
sojaL

>>> print ('PI-nél nagyobb' if pi > 3.14159 else 'Pont PI érték')
Pont PI érték


Egy művelet, parancs egy sorba helyezkedik el és a sorvége jelzi a parancs végét.
Következő sorba az újabb parancs kerül.


Az utasításblokkokat behúzások  határolják, a belső parancs(-ok) kezdete elé pár space vagy TAB karakter kerül.

A kis/nagybetű lényeges a változónevekben az azonosításban.

A karakterláncok összetett adatok (szekvenciák  kategóriába tartozik)
ezért speciális műveletei is vannak és egy módosítható adattípust képeznek.

--- Többsoros értékadás 1.
>>> hosszu_szoveg = "Ez egy nagyon hosszú sor\n ami több sorba tagol sövegsort\n\
...  tartalmaz és ilyen módon \n hasonlit a C/C++.\n \n --még nincs vége itt sem\
...    fontos,hogy a white space-ek\n a sor elején lényegesek.\n"

\ karaker különleges karakterek bevitelének levédésére szolgál
valamint lehetővé teszi, hogy egy parancsot, ami nem fér el egy sorban,
azt több sorba írjunk ekkor a összevonásra jelzett sorvégek utolsó karakterei ezek.

--- Többsoros értékadás 2.
a1 = """
... Ez egy nagyon hosszú sor\n ami több sorba tagol sövegsort\n
... tartalmaz és ilyen módon \n hasonlit a C/C++.\n \n --még nincs vége itt sem\
... fontos,hogy a white space-ek\n a sor elején lényegesek.\n
... """

  A több soros szöveget ekkor háromszoros aposztroffal   vagy háromszoros idézőjellel határolhatjuk


További összetett adattípusok:

  A lista : szögletes zárójelbe zárt, vesszővel elválasztott elemek csoportja.

          >>> nap = ['hétfő', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat', 'vasárnap', 1]
  >>> print nap
  ['hétfő', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat', 'vasárnap', 1]


  Listák jellemzői:
        - A listát alkotó elemek különböző típusúak lehetnek
- A listák is szekvenciák, úgy mint a karakterláncok
- A listák módosítható adattípusok (meg lehet változtatni az elemeit)


  Listák belső függvényei:
         - len()           hossz megadása
- del()           törlés
- append()    hozzáfűzés
- int()           egésszé alakítás
- float()        számmá alakítás





  ---- Modulok importálása
  from math import *


Konzolos működés jellemzője:
Egy parancs sor melyet a parancs értelmező promt jel >>>  után gépelünk be és ennek válasza a következő sorban jelenik meg majd újra megjelenik a parancs értelmező promt jel >>>.


py állomány futtatható és meghívható modulként is használható szerkezet (minta_modul01.py):
def main():
    print('Py3')

##------------------------

if __name__ == "__main__":
    main()



MS oktatások

Kicsit fejlesztettem és teszteltem magamat. https://docs.microsoft.com/hu-hu/ Érdemes végig csinálni, vagy legalább kipróbálni. ...