Top Banner
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
33

Wprowadzenie do Pythona

Dec 05, 2014

Download

Technology

konryd

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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