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