wprowadzenie do pythona

33
Start Do roboty Biblioteki Idiomy Co dalej? Wstęp do Pythona Konrad Delong 5 listopada 2008, Akademia Górniczo-Hutnicza Konrad Delong Wstęp do Pythona

Upload: konryd

Post on 05-Dec-2014

3.344 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

Wstęp do Pythona

Konrad Delong

5 listopada 2008, Akademia Górniczo-Hutnicza

Konrad Delong Wstęp do Pythona

Page 2: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

IntroWstęp do wstępu

Dzień dobry

Kto mówi?

AGH, Python

Studencki Festiwal Informatyczny, Pykonik

Pykonik Jutro!

http://konryd.blogspot.com

Konrad Delong Wstęp do Pythona

Page 3: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

IntroWstęp do wstępu

Dzień dobry

Kto mówi?

AGH, Python

Studencki Festiwal Informatyczny, Pykonik

Pykonik Jutro!

http://konryd.blogspot.com

Konrad Delong Wstęp do Pythona

Page 4: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

IntroWstęp do wstępu

Audiencja docelowa

Do kogo?

Osoby nieznające Pythona, (nawet niekoniecznie umiejąceprogramować)

Konrad Delong Wstęp do Pythona

Page 5: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

IntroWstęp do wstępu

Cel

Po co?

Przedstawić

Wyjaśnić

Zaciekawić

Dla studentów I roku na AGH: pokazać Pythona zanimdziekan pokaże ruby’ego

Konrad Delong Wstęp do Pythona

Page 6: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

IntroWstęp do wstępu

Cel

Po co?

Przedstawić

Wyjaśnić

Zaciekawić

Dla studentów I roku na AGH: pokazać Pythona zanimdziekan pokaże ruby’ego

Konrad Delong Wstęp do Pythona

Page 7: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

IntroWstęp do wstępu

Historia

Język stworzony przez Guido von Rossuma w 1990 roku

Inspirowany jego poprzednią pracą (język ABC)

Nazwa...

Pojęcie BDFL

Aktualnie wersja 2.6, wciąż powszechna 2.5, czekamy na 2.7 i3.0

Alternatywne implementacje

Łączący paradygmaty programowania: strukturalny, obiektowyi funkcyjny

Konrad Delong Wstęp do Pythona

Page 8: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

IntroWstęp do wstępu

Użycia

Używany przez Google i NASA (i mnie)

Skrypty

Aplikacje biurkowe

Aplikacje sieciowe

Gry / animacje

Administracja

Cała reszta

Konrad Delong Wstęp do Pythona

Page 9: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

IntroWstęp do wstępu

Bajery

Wbudowane struktury danych (ze wsparciem składniowym!)

Interaktywny interpreter z wbudowaną pomocą

Nacisk na czytelność (znaczące białe znaki), unikanie czarów

System modułów, przestrzenie nazw

The Zen of Python

Konrad Delong Wstęp do Pythona

Page 10: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

if

if a == b:print "NOWAI! Takie same!"

# a tutaj jest komentarz

Konrad Delong Wstęp do Pythona

Page 11: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

if..else

if a == b:print "NOWAI! Takie same!"

else:print "A jednak nie!"

# i jeszcze jeden komentarz

Konrad Delong Wstęp do Pythona

Page 12: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

while

a = 10while a > 0:print aa = a / 2

# wypisze 10, 5, 2, 1

Konrad Delong Wstęp do Pythona

Page 13: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

for..in

for a in (10, 5, 2, 1):print a

for i in range(3): # 0, 1, 2print i

Konrad Delong Wstęp do Pythona

Page 14: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

do..while

NI MA

Konrad Delong Wstęp do Pythona

Page 15: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

try..except

try:a = 1 / b

except ZeroDivisionError:print "Nie dziel przez zero"

Konrad Delong Wstęp do Pythona

Page 16: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

funkcje

def is_it_monday(day):if day == "Monday":return True

else:return False

print is_it_monday("Tuesday")

Konrad Delong Wstęp do Pythona

Page 17: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

lambda

def twice(x):return 2 * x

# to samo

twice = lambda x: 2 * x

Konrad Delong Wstęp do Pythona

Page 18: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

klasy

class Dog(object):def speak(self):print "Hau!"

burek = Dog()burek.speak()

Konrad Delong Wstęp do Pythona

Page 19: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

Struktury danych

Tablice haszujące, Funkcje haszujące

Konrad Delong Wstęp do Pythona

Page 20: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

Struktury danych

Zrobione raz. Zrobione dobrze.

Literały – czytelność.

Lista

Krotka

Słownik

Zbiór

Konrad Delong Wstęp do Pythona

Page 21: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

Listy

[1, "blah!", 3.4, [1, 2]]

Uporządkowany ciąg elementów dowolnego typu

Można myśleć jak o tablicy, której długością nie trzeba sięprzejmować

Konrad Delong Wstęp do Pythona

Page 22: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

Krotki

(1, "blah!", 3.4, (1, 2))

Uporządkowany ciąg elementów dowolnego typu

Immutable - można wyliczyć hasz (zaindeksować słownik,trzymać w zbiorze)

Konrad Delong Wstęp do Pythona

Page 23: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

Słowniki

{1: 2, "asdf": 3, (3, 4): "a tutaj krotka"}

Przechowują mapowanie elementów haszowalnych w cokolwiek

Można myśleć jak o tablicy, której nie musimy indeksowaćliczbami

Wyszukiwanie elementu O(1)

Zoptymalizowane dla stringów (często używane w Pythonie)

NAPRAWDĘ ZOPTYMALIZOWANE

Konrad Delong Wstęp do Pythona

Page 24: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

Słowniki

{1: 2, "asdf": 3, (3, 4): "a tutaj krotka"}

Przechowują mapowanie elementów haszowalnych w cokolwiek

Można myśleć jak o tablicy, której nie musimy indeksowaćliczbami

Wyszukiwanie elementu O(1)

Zoptymalizowane dla stringów (często używane w Pythonie)

NAPRAWDĘ ZOPTYMALIZOWANE

Konrad Delong Wstęp do Pythona

Page 25: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

Zbiory

set([1, 2, "asdf"]) # nie do końca literał

W gruncie rzeczy słowniki

Przechowują tylko obiekty haszowalne

Podstawowa operacja 1: dodanie elementu

Podstawowa operacja 2: sprawdzenie obecności elementu

Konrad Delong Wstęp do Pythona

Page 26: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

Moduły

DEMO

Konrad Delong Wstęp do Pythona

Page 27: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

SkładniaStruktury danychSystem modułów i przestrzenie nazw

wildcard import

LUKE: Is from module import * better than explicit imports?YODA: No, not better. Quicker, easier, more seductive.LUKE: But how will I know why explicit imports are better thanthe wild-card form?YODA: Know you will when your code you try to read six monthsfrom now.

Konrad Delong Wstęp do Pythona

Page 28: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

Biblioteki

biblioteka standardowa - skarby na dzieńdobry

numPy - obliczenia numeryczne

symPy - obliczenia numeryczne

PIL - operacje na plikach graficznych

matplotlib - produkowanie wykresów

django, turbogears, pylons - frameworki sieciowe

wxPython, pygtk, pyqt, winforms (tylko na .net)

i wiele, wiele innych...(Cheeseshop + easy install)

Konrad Delong Wstęp do Pythona

Page 29: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

kwiatki

b, a = a, b # swap

pair = ("John", "Doe") # unpackingfirst, last = name

# list comprehensions[2 * x for x in range(3)] # == [0, 2, 4]

# string formattingprint "a is %s and b is %s" % (a, b)

Konrad Delong Wstęp do Pythona

Page 30: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

skrypty

if __name__ == ’__main__’:print "I am run as a script, not imported!"

Konrad Delong Wstęp do Pythona

Page 31: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

DokumentacjaSpołeczność

www.python.org

docs.python.org

oficjalny tutorial

(nieoficjalnych też pełno; jeden z lepszych: ”Dive intoPython”)

global module index

kilka HOWTO

help() w konsoli!

Google is your friend, Luke

Konrad Delong Wstęp do Pythona

Page 32: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

DokumentacjaSpołeczność

Społeczność

Blogi

Grupy dyskusyjne

irc

Pykonik

Konrad Delong Wstęp do Pythona

Page 33: Wprowadzenie do Pythona

StartDo robotyBibliotekiIdiomy

Co dalej?

DokumentacjaSpołeczność

FIN

Konrad Delong Wstęp do Pythona