Python

Från Unix.se, den fria unixresursen.

Python är ett objektorienterat tolkat programspråk. "Det andra skriptspråket" (jämte Perl), enligt Pythons skapare Guido van Rossum. Python anses av många vara väldigt städat, elegant och noga genomtänkt till sin karaktär; det tenderar att attrahera den sortens programmerare som finner Perl förkastligt.

Förutom den officiella implementationen, CPython, finns det även andra alternativ, som exempelvis Jython och IronPython.

Innehåll

Syntax och semantik

Betydelsefulla blanktecken

I Python-kod är mängden indentering betydelsefull för programmets funktion, eftersom det är det som utgör mekanismen för att avgränsa kodblock. Detta kan verka främmande för programmerare vana vid andra programspråk, där man använder symboler för att göra detsamma, t.ex. '{}' i C, C++, etc. Denna egenskap medför dock att indenteringen alltid blir genomförd på ett konsekvent sätt.

Exempel:

if var:
  x = 1
  print "foo"
else:
  x = 2
  print "bar"

Funktionella inslag

Python innehåller en del element från den funktionella programmeringsvärlden. Bl.a. finns funktioner som map, filter och reduce, lambda-uttryck och listomfattningar. Lambda-uttrycken hämmas dock av att Python skiljer på satser och uttryck, och det är bara de senare (och bara ett) som kan ingå i ett lambda-uttryck. Man kan heller inte använda dem för att göra riktiga omslutningar.

Exempel på map:

>>> def square(x): return x*x
>>> map (square, [2,3,4])
[4, 9, 16]

I detta exempel använder vi funktionen map, som tar en funktion och en lista som argument, och applicerar den funktionen på varje element i listan, och skapar en ny lista med resultaten.

Vi kan skapa samma lista med ett listomfattningsuttryck:

>>> [x*x for x in [2,3,4]]  
[4, 9, 16]

Ett mer avancerat exempel är:

>>> def even(x): return (x%2 == 0) 
>>> [x*x for x in [1,2,3,4,5,6] if even(x)]
[4, 16, 36]

Här kvadreras alla jämna tal i listan.

Lambda-uttryck:

>>> map (lambda x: x*x, [2,3,4])
[4, 9, 16]

Här använder vi en anonym funktion till att göra samma sak som square.

Nämnas bör kanske att Guido van Rossum själv inte är särskilt förtjust i dessa språkkonstruktioner. Han nämner "lambda", "reduce", "map" och "filter" tillsammans med "apply" (som också hämtades direkt från Lisp) i en lista över saker han ångrar att han lade till språket (http://www.python.org/doc/essays/ppt/regrets/PythonRegrets.pdf).

Externa länkar

Personliga verktyg