Python (programspråk)

Från Wikipedia
Hoppa till: navigering, sök

Python är ett programspråk som utformades i slutet av 1980-talet av Guido van Rossum och som har fått sitt namn från Monty Python[1]. Python har utvecklats till ett kraftfullt och samtidigt smidigt språk med stöd för flera olika programmeringsparadigmer, bland annat objektorienterad och funktionell programmering. Till språket hör ett rikt standardbibliotek.

Version 3[2] av Python publicerades den 3 december 2008. Skillnaderna mellan version 2.6 och 3.0 är relativt stora. Den mest uppenbara ändringen är att print-satsen ersatts av en print-funktion[3].

Utmärkande drag[redigera | redigera wikitext]

Något som särskilt utmärker Python är dess "eleganta" och rena programkod[4]. Rader behöver inte avslutas med semikolon, något som annars är vanligt i andra programspråk. Klamrar ('{', '}') behövs inte heller för att dela in koden i block, eftersom indragningar avgör var ett kod-block börjar och slutar. Detta ökar läsbarheten av koden[5].

Objektorienteringen i Python går längre än den man finner i exempelvis C++, eftersom språkets alla datatyper är baserade på objekt och klasser. Du kan exempelvis skriva:

print("en gul bil".replace("gul", "grön"))

Replace är en inbyggd metod[6] och utskriften blir "en grön bil". Själva strängen fungerade som ett objekt av klassen str, det vill säga en sträng. Vidare stöder Python multipelt arv, har automatisk skräpsamling och dynamisk typning.

Enkla datatyper[redigera | redigera wikitext]

Python har ett antal enkla datatyper som numeriska (int, float, long, complex). Förutom de numeriska datatyperna finns boolean, sträng, lista, tuple och ordbok[7].

Operander[redigera | redigera wikitext]

I programmering är möjligheten att beräkna central, därav det engelska namnet Computer Science. Datavetenskap är en studie av algoritmer[8], vilket skapar ett behov av beräkningar. Dessa beräkningar utförs av operander (plus, minus, och så vidare). I Python finns det en mängd operander där de enklaste representeras i listan nedan.

Namn Operand Beskrivning
Addition + Beräknar summan av två tal
Subtraktion - Beräknar differensen mellan två tal
Multiplikation * Beräknar produkten av två tal
Division / Beräknar kvoten av två tal
Heltalsdivision // Beräknar heltalskvoten av två tal
Rest  % Beräknar resten efter en division av två heltal
Exponent ** (x ** y) Beräknar x upphöjt till y xy

Numeriska datatyper[redigera | redigera wikitext]

Heltal[redigera | redigera wikitext]

Heltal beskrivs bäst som ett tal utan decimaler. Det innebär att resten i en division lämnas utan åtgärd.

    >>> i = 3
    >>> j = 2
    >>> i / j
    1
    >>>

Icke numeriska datatyper[redigera | redigera wikitext]

Sträng[redigera | redigera wikitext]

En sträng är en datatyp uppbyggd av tecken, såsom bokstäver, siffror och interpunktioner. I Python definieras den med apostrofer 'sträng' eller citationstecken"sträng". Det går också att skriva strängar uppdelade på flera rader genom att använda """sträng""".

En sträng är uppbyggd på samma sätt som en lista vilket innebär att man kan ta fram tecken nummer n i en lista . I exemplet nedan visas det tredje respektive det sista tecknet* i den konkatenerade strängen. Negativa värden för n avser index från slutet av strängen.

    >>> s = ''
    >>> s
    ''
    >>> s += 'concatenate string'
    >>> s
    'concatenate string'
    >>> s[2]
    'n'
    >>> s[-1]
    'g'
    >>>
*) Det tredje tecknet representeras av [2] eftersom listor börjar räkna från 0.

Boolesk (boolean, bool)[redigera | redigera wikitext]

Datatypen boolean, sant eller falskt, kan testas på flera olika sätt och används framförallt i iterativa loopar. None, noll ( 0 ), en tom lista [] eller en tom tuple {} representeras som falska. Numeriska värden som inte är noll ( 0 ), listor med innehåll och ordböcker med innehåll är sanna.

    >>> i = 3
    >>> bool(i)
    True
    >>> bool(i-i)
    False
    >>>
 
    >>> a = []
    >>> bool(a)
    False
    >>> a.append(3)
    >>> a
    [3]
    >>> bool(a)
    True
    >>>

Programexempel[redigera | redigera wikitext]

"Hello World"

    print("Hello World")

Skriver talen 0-99 till en fil, ett tal per rad.

    numbers = []
    for number in range(100):
        numbers.append(str(number) + "\n")
 
    open("filnamn", "w").writelines(numbers)

Som exemplet ovan, fast utan att det behövs någon variabel för mellanlagring.

    open("filnamn", "w").writelines(str(x)+"\n" for x in range(100))

Caesars rotationskrypto[redigera | redigera wikitext]

Julius Caesar roterade enligt Suetonius alfabetet för att kryptera sina meddelanden, Caesarchiffer. Ett inte allt för avancerat krypto, men det gick inte att läsa textens innehåll i klartext, utan man är tvungen att veta hur många steg alfabetet är roterat. Nedan ett Pythonprogram (ver 2.6) som krypterar en text-fil:

    #! /usr/bin/env python
    # -*- coding: UTF-8 -*-
    # print header
 
    print('-'*77)
    print(" Use function code() to open file to encrypt and save it with a new name")
    print('-'*77)
 
    import tkFileDialog
 
    def code():
 
        #retreive filename
        openFileName = tkFileDialog.askopenfilename()
 
        while openFileName == '':
            print('Please choose a file')
            openFileName = tkFileDialog.askopenfilename()
 
        #open file with filename
        f = open( openFileName, 'r' )
        fileData= f.read()
 
        #encode file
        encodedFile = ''
 
        for char in fileData:
            encodedFile += alphabet(char)
 
        #save file
        saveFileName = tkFileDialog.asksaveasfilename()
 
        if saveFileName:
            file = open( saveFileName, 'w' )
            file.write(encodedFile)
            print("File encrypted and saved successfully")
 
        f.close()
 
    def alphabet(char):
        alphabet = "abcdefghijklmnopqrstuvwxyzåäö" 
        alphabet += "ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ" 
        alphabet += ".,;:-_?=()/&%\#!{[]}’*^~<|>" 
        alphabet += "0123456789" 
        alphabet += "\n" + "\r" + ' '
 
        if char in alphabet:
            pos = alphabet.find( char )
            encr = alphabet[ (pos + 3) % len( alphabet ) ]
        else:
            encr = char
 
        return encr

Hitta länkar och e-postadresser i webbsidor[redigera | redigera wikitext]

Det här lilla programmet (Python 2.6) returnerar webbadresser och e-postadresser från en webbsidas kod. Kan vara användbart om det finns dolda element, eller länkar som inte alltid är synliga:

    #! /usr/bin/env python
    # -*- coding: cp1252 -*-
 
    # print header
    print '-'*77
    print ' Use function getAddresses( "url" ) to retreive links from current'
    print ' URL.'
    print '-'*77
 
    import urllib2
 
    def getAddresses( url ):
        f = urllib2.urlopen( url )
        source = f.read()
        source = source.split(' ')
        urls = []
 
        for s in source:
            if 'http://' in s:
                s = s.split('"')
                for x in s:
                    if 'http://' in x:
                        urls.append( x )
 
        emails = []
 
        for s in source:
            if '@' in s:
                s = s.split('"')
                for x in s:
                    if '@' in x and x != '@import' and 'mailto' not in s[i]:
                        m = x.split('<')
                        emails.append( m[0] )
 
        return emails, urls

Se även[redigera | redigera wikitext]

Referenser[redigera | redigera wikitext]

  1. ^ ”General Python FAQ”. Python Foundation. http://www.python.org/doc/faq/general/. Läst 31 mars 2009. 
  2. ^ ”Python 3.0”. Python Foundation. http://www.python.org/download/releases/3.0/. Läst 5 juli 2009. 
  3. ^ ”What’s New In Python 3.0”. Python Foundation. http://docs.python.org/3.0/whatsnew/3.0.html. Läst 5 juli 2009. 
  4. ^ ”General Python FAQ”. python.org. Python Software Foundation. http://www.python.org/doc/faq/general/#what-is-python. Läst 5 juli 2009. 
  5. ^ ”What is Python? Executive Summary”. Python documentation. Python Foundation. http://www.python.org/doc/essays/blurb/. Läst 5 juli 2007. 
  6. ^ ”Built-in Types”. Python documentation. Python Foundation. http://docs.python.org/library/stdtypes.html. Läst 5 juli 2007. 
  7. ^ Miller, Bradley M: "Python programming in context", appendix B. Jones and Bartlett Publishers, 2009
  8. ^ Miller, Bradley M: "Python programming in context", sid 2. Jones and Bartlett Publishers, 2009

Externa länkar[redigera | redigera wikitext]