SlideShare a Scribd company logo
1 of 33
Download to read offline
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
Start
                          Do roboty
                                       Intro
                          Biblioteki
                                       Wstęp do wstępu
                             Idiomy
                          Co dalej?


Dzień dobry



  Kto mówi?
     AGH, Python
     Studencki Festiwal Informatyczny, Pykonik
     Pykonik Jutro!
     http://konryd.blogspot.com




                      Konrad Delong    Wstęp do Pythona
Start
                          Do roboty
                                       Intro
                          Biblioteki
                                       Wstęp do wstępu
                             Idiomy
                          Co dalej?


Dzień dobry



  Kto mówi?
     AGH, Python
     Studencki Festiwal Informatyczny, Pykonik
     Pykonik Jutro!
     http://konryd.blogspot.com




                      Konrad Delong    Wstęp do Pythona
Start
                          Do roboty
                                       Intro
                          Biblioteki
                                       Wstęp do wstępu
                             Idiomy
                          Co dalej?


Audiencja docelowa




  Do kogo?

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




                      Konrad Delong    Wstęp do Pythona
Start
                          Do roboty
                                       Intro
                          Biblioteki
                                       Wstęp do wstępu
                             Idiomy
                          Co dalej?


Cel



  Po co?
      Przedstawić
      Wyjaśnić
      Zaciekawić
      Dla studentów I roku na AGH: pokazać Pythona zanim
      dziekan pokaże ruby’ego




                      Konrad Delong    Wstęp do Pythona
Start
                          Do roboty
                                       Intro
                          Biblioteki
                                       Wstęp do wstępu
                             Idiomy
                          Co dalej?


Cel



  Po co?
      Przedstawić
      Wyjaśnić
      Zaciekawić
      Dla studentów I roku na AGH: pokazać Pythona zanim
      dziekan pokaże ruby’ego




                      Konrad Delong    Wstęp do Pythona
Start
                           Do roboty
                                        Intro
                           Biblioteki
                                        Wstęp do wstępu
                              Idiomy
                           Co dalej?


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 i
      3.0
      Alternatywne implementacje
      Łączący paradygmaty programowania: strukturalny, obiektowy
      i funkcyjny



                       Konrad Delong    Wstęp do Pythona
Start
                              Do roboty
                                           Intro
                              Biblioteki
                                           Wstęp do wstępu
                                 Idiomy
                              Co dalej?


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
Start
                          Do roboty
                                       Intro
                          Biblioteki
                                       Wstęp do wstępu
                             Idiomy
                          Co dalej?


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
Start
                           Do roboty    Składnia
                           Biblioteki   Struktury danych
                              Idiomy    System modułów i przestrzenie nazw
                           Co dalej?


if




     if a == b:
         print quot;NOWAI! Takie same!quot;

     # a tutaj jest komentarz




                       Konrad Delong    Wstęp do Pythona
Start
                         Do roboty    Składnia
                         Biblioteki   Struktury danych
                            Idiomy    System modułów i przestrzenie nazw
                         Co dalej?


if..else



   if a == b:
       print quot;NOWAI! Takie same!quot;
   else:
       print quot;A jednak nie!quot;

   # i jeszcze jeden komentarz




                     Konrad Delong    Wstęp do Pythona
Start
                        Do roboty    Składnia
                        Biblioteki   Struktury danych
                           Idiomy    System modułów i przestrzenie nazw
                        Co dalej?


while



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

  # wypisze 10, 5, 2, 1




                    Konrad Delong    Wstęp do Pythona
Start
                         Do roboty    Składnia
                         Biblioteki   Struktury danych
                            Idiomy    System modułów i przestrzenie nazw
                         Co dalej?


for..in




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

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




                     Konrad Delong    Wstęp do Pythona
Start
                Do roboty    Składnia
                Biblioteki   Struktury danych
                   Idiomy    System modułów i przestrzenie nazw
                Co dalej?


do..while




  NI MA




            Konrad Delong    Wstęp do Pythona
Start
                        Do roboty    Składnia
                        Biblioteki   Struktury danych
                           Idiomy    System modułów i przestrzenie nazw
                        Co dalej?


try..except




  try:
      a = 1 / b
  except ZeroDivisionError:
      print quot;Nie dziel przez zeroquot;




                    Konrad Delong    Wstęp do Pythona
Start
                        Do roboty    Składnia
                        Biblioteki   Struktury danych
                           Idiomy    System modułów i przestrzenie nazw
                        Co dalej?


funkcje



  def is_it_monday(day):
      if day == quot;Mondayquot;:
          return True
      else:
          return False

  print is_it_monday(quot;Tuesdayquot;)




                    Konrad Delong    Wstęp do Pythona
Start
                         Do roboty    Składnia
                         Biblioteki   Struktury danych
                            Idiomy    System modułów i przestrzenie nazw
                         Co dalej?


lambda




  def twice(x):
      return 2 * x

  # to samo

  twice = lambda x: 2 * x




                     Konrad Delong    Wstęp do Pythona
Start
                         Do roboty    Składnia
                         Biblioteki   Struktury danych
                            Idiomy    System modułów i przestrzenie nazw
                         Co dalej?


klasy



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

  burek = Dog()
  burek.speak()




                    Konrad Delong     Wstęp do Pythona
Start
                            Do roboty    Składnia
                            Biblioteki   Struktury danych
                               Idiomy    System modułów i przestrzenie nazw
                            Co dalej?


Struktury danych




  Tablice haszujące, Funkcje haszujące




                        Konrad Delong    Wstęp do Pythona
Start
                           Do roboty    Składnia
                           Biblioteki   Struktury danych
                              Idiomy    System modułów i przestrzenie nazw
                           Co dalej?


Struktury danych



     Zrobione raz. Zrobione dobrze.
     Literały – czytelność.
     Lista
     Krotka
     Słownik
     Zbiór




                       Konrad Delong    Wstęp do Pythona
Start
                              Do roboty    Składnia
                              Biblioteki   Struktury danych
                                 Idiomy    System modułów i przestrzenie nazw
                              Co dalej?


Listy




  [1, quot;blah!quot;, 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
Start
                              Do roboty    Składnia
                              Biblioteki   Struktury danych
                                 Idiomy    System modułów i przestrzenie nazw
                              Co dalej?


Krotki




  (1, quot;blah!quot;, 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
Start
                           Do roboty    Składnia
                           Biblioteki   Struktury danych
                              Idiomy    System modułów i przestrzenie nazw
                           Co dalej?


Słowniki


  {1: 2, quot;asdfquot;: 3, (3, 4): quot;a tutaj krotkaquot;}

      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
Start
                           Do roboty    Składnia
                           Biblioteki   Struktury danych
                              Idiomy    System modułów i przestrzenie nazw
                           Co dalej?


Słowniki


  {1: 2, quot;asdfquot;: 3, (3, 4): quot;a tutaj krotkaquot;}

      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
Start
                              Do roboty    Składnia
                              Biblioteki   Struktury danych
                                 Idiomy    System modułów i przestrzenie nazw
                              Co dalej?


Zbiory



  set([1, 2, quot;asdfquot;]) # 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
Start
             Do roboty    Składnia
             Biblioteki   Struktury danych
                Idiomy    System modułów i przestrzenie nazw
             Co dalej?


Moduły




  DEMO




         Konrad Delong    Wstęp do Pythona
Start
                           Do roboty    Składnia
                           Biblioteki   Struktury danych
                              Idiomy    System modułów i przestrzenie nazw
                           Co dalej?


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 than
  the wild-card form?
  YODA: Know you will when your code you try to read six months
  from now.




                       Konrad Delong    Wstęp do Pythona
Start
                            Do roboty
                            Biblioteki
                               Idiomy
                            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
Start
                           Do roboty
                           Biblioteki
                              Idiomy
                           Co dalej?


kwiatki


  b, a = a, b # swap

  pair = (quot;Johnquot;, quot;Doequot;) # unpacking
  first, last = name

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

  # string formatting
  print quot;a is %s and b is %squot; % (a, b)



                       Konrad Delong    Wstęp do Pythona
Start
                        Do roboty
                        Biblioteki
                           Idiomy
                        Co dalej?


skrypty




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




                    Konrad Delong    Wstęp do Pythona
Start
                             Do roboty
                                          Dokumentacja
                             Biblioteki
                                          Społeczność
                                Idiomy
                             Co dalej?


www.python.org


     docs.python.org
     oficjalny tutorial
     (nieoficjalnych też pełno; jeden z lepszych: ”Dive into
     Python”)
     global module index
     kilka HOWTO
     help() w konsoli!
     Google is your friend, Luke



                         Konrad Delong    Wstęp do Pythona
Start
                            Do roboty
                                         Dokumentacja
                            Biblioteki
                                         Społeczność
                               Idiomy
                            Co dalej?


Społeczność




     Blogi
     Grupy dyskusyjne
     irc
     Pykonik




                        Konrad Delong    Wstęp do Pythona
Start
    Do roboty
                 Dokumentacja
    Biblioteki
                 Społeczność
       Idiomy
    Co dalej?




          FIN




Konrad Delong    Wstęp do Pythona

More Related Content

More from konryd

Za co nie lubi Cię Twój hoster
Za co nie lubi Cię Twój hosterZa co nie lubi Cię Twój hoster
Za co nie lubi Cię Twój hosterkonryd
 
Concurrency in Python
Concurrency in PythonConcurrency in Python
Concurrency in Pythonkonryd
 
Objective C
Objective CObjective C
Objective Ckonryd
 
Bazaar Mercurial
Bazaar MercurialBazaar Mercurial
Bazaar Mercurialkonryd
 
Wstęp do Subversion
Wstęp do SubversionWstęp do Subversion
Wstęp do Subversionkonryd
 
Haskell
HaskellHaskell
Haskellkonryd
 
Erlang
ErlangErlang
Erlangkonryd
 
Wstęp do Ruby\'ego
Wstęp do Ruby\'egoWstęp do Ruby\'ego
Wstęp do Ruby\'egokonryd
 

More from konryd (9)

Za co nie lubi Cię Twój hoster
Za co nie lubi Cię Twój hosterZa co nie lubi Cię Twój hoster
Za co nie lubi Cię Twój hoster
 
Concurrency in Python
Concurrency in PythonConcurrency in Python
Concurrency in Python
 
Objective C
Objective CObjective C
Objective C
 
Bazaar Mercurial
Bazaar MercurialBazaar Mercurial
Bazaar Mercurial
 
Wstęp do Subversion
Wstęp do SubversionWstęp do Subversion
Wstęp do Subversion
 
Scala
ScalaScala
Scala
 
Haskell
HaskellHaskell
Haskell
 
Erlang
ErlangErlang
Erlang
 
Wstęp do Ruby\'ego
Wstęp do Ruby\'egoWstęp do Ruby\'ego
Wstęp do Ruby\'ego
 

Wprowadzenie do Pythona

  • 1. 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
  • 2. Start Do roboty Intro Biblioteki Wstęp do wstępu Idiomy Co dalej? Dzień dobry Kto mówi? AGH, Python Studencki Festiwal Informatyczny, Pykonik Pykonik Jutro! http://konryd.blogspot.com Konrad Delong Wstęp do Pythona
  • 3. Start Do roboty Intro Biblioteki Wstęp do wstępu Idiomy Co dalej? Dzień dobry Kto mówi? AGH, Python Studencki Festiwal Informatyczny, Pykonik Pykonik Jutro! http://konryd.blogspot.com Konrad Delong Wstęp do Pythona
  • 4. Start Do roboty Intro Biblioteki Wstęp do wstępu Idiomy Co dalej? Audiencja docelowa Do kogo? Osoby nieznające Pythona, (nawet niekoniecznie umiejące programować) Konrad Delong Wstęp do Pythona
  • 5. Start Do roboty Intro Biblioteki Wstęp do wstępu Idiomy Co dalej? Cel Po co? Przedstawić Wyjaśnić Zaciekawić Dla studentów I roku na AGH: pokazać Pythona zanim dziekan pokaże ruby’ego Konrad Delong Wstęp do Pythona
  • 6. Start Do roboty Intro Biblioteki Wstęp do wstępu Idiomy Co dalej? Cel Po co? Przedstawić Wyjaśnić Zaciekawić Dla studentów I roku na AGH: pokazać Pythona zanim dziekan pokaże ruby’ego Konrad Delong Wstęp do Pythona
  • 7. Start Do roboty Intro Biblioteki Wstęp do wstępu Idiomy Co dalej? 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 i 3.0 Alternatywne implementacje Łączący paradygmaty programowania: strukturalny, obiektowy i funkcyjny Konrad Delong Wstęp do Pythona
  • 8. Start Do roboty Intro Biblioteki Wstęp do wstępu Idiomy Co dalej? 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
  • 9. Start Do roboty Intro Biblioteki Wstęp do wstępu Idiomy Co dalej? 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
  • 10. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? if if a == b: print quot;NOWAI! Takie same!quot; # a tutaj jest komentarz Konrad Delong Wstęp do Pythona
  • 11. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? if..else if a == b: print quot;NOWAI! Takie same!quot; else: print quot;A jednak nie!quot; # i jeszcze jeden komentarz Konrad Delong Wstęp do Pythona
  • 12. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? while a = 10 while a > 0: print a a = a / 2 # wypisze 10, 5, 2, 1 Konrad Delong Wstęp do Pythona
  • 13. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? for..in for a in (10, 5, 2, 1): print a for i in range(3): # 0, 1, 2 print i Konrad Delong Wstęp do Pythona
  • 14. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? do..while NI MA Konrad Delong Wstęp do Pythona
  • 15. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? try..except try: a = 1 / b except ZeroDivisionError: print quot;Nie dziel przez zeroquot; Konrad Delong Wstęp do Pythona
  • 16. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? funkcje def is_it_monday(day): if day == quot;Mondayquot;: return True else: return False print is_it_monday(quot;Tuesdayquot;) Konrad Delong Wstęp do Pythona
  • 17. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? lambda def twice(x): return 2 * x # to samo twice = lambda x: 2 * x Konrad Delong Wstęp do Pythona
  • 18. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? klasy class Dog(object): def speak(self): print quot;Hau!quot; burek = Dog() burek.speak() Konrad Delong Wstęp do Pythona
  • 19. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? Struktury danych Tablice haszujące, Funkcje haszujące Konrad Delong Wstęp do Pythona
  • 20. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? Struktury danych Zrobione raz. Zrobione dobrze. Literały – czytelność. Lista Krotka Słownik Zbiór Konrad Delong Wstęp do Pythona
  • 21. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? Listy [1, quot;blah!quot;, 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
  • 22. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? Krotki (1, quot;blah!quot;, 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
  • 23. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? Słowniki {1: 2, quot;asdfquot;: 3, (3, 4): quot;a tutaj krotkaquot;} 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
  • 24. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? Słowniki {1: 2, quot;asdfquot;: 3, (3, 4): quot;a tutaj krotkaquot;} 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
  • 25. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? Zbiory set([1, 2, quot;asdfquot;]) # 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
  • 26. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? Moduły DEMO Konrad Delong Wstęp do Pythona
  • 27. Start Do roboty Składnia Biblioteki Struktury danych Idiomy System modułów i przestrzenie nazw Co dalej? 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 than the wild-card form? YODA: Know you will when your code you try to read six months from now. Konrad Delong Wstęp do Pythona
  • 28. Start Do roboty Biblioteki Idiomy 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
  • 29. Start Do roboty Biblioteki Idiomy Co dalej? kwiatki b, a = a, b # swap pair = (quot;Johnquot;, quot;Doequot;) # unpacking first, last = name # list comprehensions [2 * x for x in range(3)] # == [0, 2, 4] # string formatting print quot;a is %s and b is %squot; % (a, b) Konrad Delong Wstęp do Pythona
  • 30. Start Do roboty Biblioteki Idiomy Co dalej? skrypty if __name__ == ’__main__’: print quot;I am run as a script, not imported!quot; Konrad Delong Wstęp do Pythona
  • 31. Start Do roboty Dokumentacja Biblioteki Społeczność Idiomy Co dalej? www.python.org docs.python.org oficjalny tutorial (nieoficjalnych też pełno; jeden z lepszych: ”Dive into Python”) global module index kilka HOWTO help() w konsoli! Google is your friend, Luke Konrad Delong Wstęp do Pythona
  • 32. Start Do roboty Dokumentacja Biblioteki Społeczność Idiomy Co dalej? Społeczność Blogi Grupy dyskusyjne irc Pykonik Konrad Delong Wstęp do Pythona
  • 33. Start Do roboty Dokumentacja Biblioteki Społeczność Idiomy Co dalej? FIN Konrad Delong Wstęp do Pythona