Python Python • Skapat av Guido van Rossum • Döpt efter Monty • Styrkor: • Lättlärt • Klar syntax • Stort standardbibliotek • Intuitiv objektorientering • Lättintegrerat • community • Aktiv Lätt att skala upp 1 Men vad är det? • Imperativt • Objektorienterat • Dynamiskt • Skriptspråk • Jämförs ofta med Tcl, Perl, Ruby, Scheme och Java Imperativt? • Prolog är deklarativt (så här är det) • Python är imperativt (gör så här) 2 Objekt? • I Prolog finns inga objekt, bara värden • Ett objekt har attribut • Ett objekt har metoder • Typer • Klasser Skriptspråk? • Lite vagt… • Rad för rad: gör detta • Bygga macros och systemskript 3 Starta Python Interaktivt läge [bender:~] petern% python Python 2.5 (r25:51918, Sep 19 2006, 08:49:13) [GCC 4.0.1 (Apple Computer, Inc. build 5341)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> Köra skript [bender:~] petern% python helloworld.py Hello world! Vårt första program • Tradition: skriv ett "Hello World" • I Python: Interaktivt läge >>> print "Hello world!" Hello world! >>> I en fil #!/usr/local/bin/python print "Hello world!" 4 Inte vårt första program • I C++ #include <iostream.h> void main() { cout << "Hello world!" << endl; } Jämförelser (lite översikligt) Prolog Python Variabler Variabler Listor Listor m.m. Predikat Funktioner Klausuler Kontrollstrukturer Rekursion Iteration Värden Objekt 5 Variabler • (understreck eller bokstav) + (bokstäver, siffror eller understreck • inte reserverade ord • skiftlägeskänsliga: SPAM är inte spam • lite extra konventioner (mer senare) Reserverade ord Nyckelord and assert break class continue def del elif else except exec finally for from global if import in is lambda not or pass print raise return try while yield Dessutom konstanten None Specialfall: with och as 6 Grundläggande datatyper • Heltal - 3 • Flyttal - 2,456 • Listor - [1,2,3,4] (mutable) • Strängar - ”spam!” (immutable) • Dictionaries - {1:”camelot”, 2:”shrubbery”} (mutable) • Tupler - (1,2,3,) (immutable) Listor ex: [1,2,1,2,5,4,1] är inte en rekursiv datastruktur, finns inte "svans" slå ihop listor med + >>> a = [1,2,3] + [4,5,6] >>> a [1, 2, 3, 4, 5, 6] 7 Vårt andra program Demo Vad demon visade a = [1,1,2,1,1,2] print list1+list2 for item in list2: if item == 4: •tilldela variabler med = •utskrift med print •list1+list2 beräknas först Och det här är viktiga grejer… print "SPAM" 8 Viktiga grejer för varje "item" i list2: om "item" är 4: skriv "SPAM" for item in list2: if item == 4: print "SPAM" Indentering Kolon == ger jämförelser = ger tilldelning Mer variabler Prolog: Python: '=' betyder unifiering '=' betyder tilldelning '==' är lika med '!=' är inte lika med destruktiv tilldelning X=7 X=8 no logiska variabler X=7 X=8 resultat: X=8 9 Funktioner • Nyckelordet ”def” def funk(args): dodis dodat newcodehere Funktioner • Kan returnera objekt • Kan utföra andra handlingar • Kan anropa andra funktioner 10 Funktioner Exampel: def double_print(inString): print inString, inString double_print("Spanish Inquisition") resultat: Spanish Inquisition Spanish Inquisition Funktioner Exempel: def double_string(inString): return inString + inString print double_string("Spanish Inquisition") resultat: Spanish InquisitionSpanish Inquisition 11