Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF...

27
Wstęp Tutorial Moduly i wydajność Komunikacja Czlowiek-Komputer Wprowadzenie do Python’a Wojciech Jaśkowski Instytut Informatyki Politechnika Poznańska Wersja: 14 października 2013

Transcript of Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF...

Page 1: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Komunikacja Człowiek-KomputerWprowadzenie do Python’a

Wojciech Jaśkowski

Instytut InformatykiPolitechnika Poznańska

Wersja: 14 października 2013

Page 2: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Hello world

print(’Hello world’)

Page 3: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Dlaczego Python?

Prosty do naukiZwięzła składniaCzytelny kodPrzenośny: Windows, Linux/Unix, OSX, Java, .NETOtwarty, wolny, darmowyBogata biblioteka standardowa, ogromna liczba bibliotekPopularny wśród naukowców“Łatwo googlywalny”Stosunkowo popularny: 8 na liście TIOBE ProgrammingCommunity Index

Page 4: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

TIOBE Programming Community Index

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Page 5: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Kto używa?

Dropbox (Guido van Rossum)MercurialUbuntu Software CenterTrac — web-based bug/issue tracking database, wiki, andversion control front-endCivilization IV, World of Tanks — for most of its tasksBattlefield 2 — for all its addonsDjango, an MVT (model, view, template) web frameworkAbaqus, Finite Element Software (scripting)Blender 3D, Unity 3D, Cinema 4D, Maya, Corel Paint ShopPro, GIMP (scripting)Google (e.g. Youtube, Google App, Google Chrome, partially)Engine Quora, Instagram, Spotify, Reddit

Page 6: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Implementacje

CPython (standard)Najnowsze stabilne wersje: 2.7 i 3.3

PyPy (w Pythonie, JIT)Jython (dla JVM)IronPython (dla .NET)

Page 7: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Paradygmaty

Proceduralny

arr = sorted([3,2,-1])first = arr[0]

Obiektowy

class Pair(list):def __init__(self, first, second):

self.first = firstself.second = second

arr = Pair(3, 7)

Elementy funkcyjne

arr = sorted([3,2,-1], key=lambda x: abs(x))

Page 8: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Cechy Python’a

System typów:bez deklaracji

x = 1

dynamicznie typowany

x = 1x = "12"

silnie typowany

x = "1" + 1TypeError: Can’t convert ’int’ object to str implicitly

Page 9: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Składnia

“Life’s better without braces” (Bruce Eckel)dwukropek, spacje (tabulatory), cudzysłowy

if␣1+1==2:␣␣print(’Uff!’)else:␣␣print("Ups.␣I␣should’ve␣tried␣that")

komentarze

# This should not happen... normally""" An uglytwo-line comment """

Page 10: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

→ Tutorial

Page 11: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Uruchamianie i środowiska interaktywne

$> python plik.py

$> python

$> ipython

$> ipython plik.ipy

$> ipython qtconsole

$> ipython qtconsole --matplotlib

$> ipython notebook

$> ipython notebook --matplotlib=inline

Page 12: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Środowiska developerskie warte uwagi

PyCharm (http://www.jetbrains.com/pycharm/)pyscripter (https://code.google.com/p/pyscripter/)spyder (https://code.google.com/p/spyderlib/)

Page 13: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Moduły

Moduł to plik, np:

fibonacci.pyfrom __future__ import print_function # Python < 3.0MAXFIB=1000def fib(n):

a, b = 0, 1while b < n:

print(b,end=’’)a, b = b, a+b

>>> import fibonacci>>> fibonacci.fib(10)1 1 2 3 5 8

Page 14: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Moduły

Moduł to plik, np:

fibonacci.pyfrom __future__ import print_function # Python < 3.0MAXFIB=1000def fib(n):

a, b = 0, 1while b < n:

print(b,end=’’)a, b = b, a+b

>>> import fibonacci as fibo>>> fibo.fib(10)1 1 2 3 5 8

Page 15: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Moduły

Moduł to plik, np:

fibonacci.pyfrom __future__ import print_function # Python < 3.0MAXFIB=1000def fib(n):

a, b = 0, 1while b < n:

print(b,end=’’)a, b = b, a+b

>>> from fibonacci import fib>>> fib(10)1 1 2 3 5 8

Page 16: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Moduły

Moduł to plik, np:

fibonacci.pyfrom __future__ import print_function # Python < 3.0MAXFIB=1000def fib(n):

a, b = 0, 1while b < n:

print(b,end=’’)a, b = b, a+b

>>> from fibonacci import fib, MAXFIB>>> fib(10)1 1 2 3 5 8>>> MAXFIB1000

Page 17: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Moduły

Moduł to plik, np:

fibonacci.pyfrom __future__ import print_function # Python < 3.0MAXFIB=1000def fib(n):

a, b = 0, 1while b < n:

print(b,end=’’)a, b = b, a+b

>>> from fibonacci import * # Niepolecane>>> fib(10)1 1 2 3 5 8>>> MAXFIB1000

Page 18: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Skrypty

>>> import fibonacci as fib>>> fib.__name__’fibonacci’

Uruchamianie skryptów:

python fibonacci.py <argumenty>

ustawia__name__ na ’__main__’

Page 19: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Skrypty

fibonacci.pyfrom __future__ import print_functiondef fib(n):

a, b = 0, 1while b < n:

print(b, end=’’)a, b = b, a+b

if __name__ == ’__main__’:import sysfib(int(sys.argv[1]))

> python fibbonacci.py 201 1 2 3 5 8 13

Page 20: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Pakiety

sound/ Pakiet__init__.py Inicjalizacja pakietuformats/ Podpakiet ’formats’

__init__.pywavread.pywavwrite.pyaiffread.pyaiffwrite.pyauread.pyauwrite.py...

effects/ Podpakiet ’efekty’__init__.pyecho.pysurround.py

Page 21: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Pakiety

Moduły i pakiety muszą być w katalogusys.path

>>> import sys>>> sys.path[’’,’/usr/lib/python2.7/dist-packages’,’/home/wojciech/.local/lib/python2.7/site-packages’,(...)]

Page 22: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Pakiety — instalacja

Ubuntu:

sudo apt-get install python-numpy

Windows:http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy

Wszędzie z repozytorium PyPI:

> pip install numpy> easy_install numpy

Lokalnie, w katalogu użytkownika:

> pip install --user numpy> easy_install --user numpy

Page 23: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Pomoc

>>> help(abs)Help on built-in function abs in module __builtin__:

abs(...)abs(number) -> number

Return the absolute value of the argument.

>>> abs.__doc__’abs(number) -> number\n\nReturn the absolute value ofthe argument.’

>>> dir(list)[’__add__’, ..., ’sort’, ...]

Page 24: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Python jest wolny. Ale czy zbyt wolny?

Źródło: http://www.infoworld.com/d/application-development/van-rossum-python-not-too-slow-188715

Page 25: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Przyspieszanie

PyPy, kompilator z JITRozszerzenia w C lub C++: http://docs.python.org/release/2.5.2/ext/intro.html

Cython, Python z typami z C

Page 26: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Cython

def primes(int kmax):cdef int n, k, icdef int p[1000]result = []k = 0; n = 2while k < kmax:

i = 0while i < k and n % p[i] != 0:

i += 1if i == k:

p[k] = nk += 1result.append(n)

n = n + 1return result

Page 27: Komunikacja Cz owiek-Komputer - Wprowadzenie do Python'a · PDF fileBlender3D,Unity3D,Cinema4D,Maya,CorelPaintShop ... Tutorial. ... Uruchamianieiśrodowiskainteraktywne $>python plik.py

Wstęp Tutorial Moduły i wydajność

Koniec

Dziękuję za uwagę.