Python (programspråk)
Från Rilpedia
Denna artikel behöver fler källor för att verifieras. Förbättra gärna artikeln genom att lägga till fler pålitliga källor (använd helst fotnoter) Material som inte är verifierbart kan ifrågasättas eller tas bort. |
Python är ett programspråk som utformades i början av 1990-talet av Guido van Rossum och som har fått sitt namn från Monty Python[1]. Python har utvecklats till ett kraftfullt men 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.
Innehåll |
Utmärkande drag
Något som särskilt utmärker Python är dess "eleganta" och rena programkod. Rader behöver inte avslutas med semikolon, något som annars är vanligt i andra programspråk. Måsvingar ('{', '}') behövs inte heller för att dela in koden i block, eftersom indragningar avgör var ett kod-block börjar och slutar.
Objektorienteringen i Python går längre än den man finner i exempelvis C++, då språkets alla datatyper är baserade på objekt och klasser. Du kan exempelvis skriva:
print("en gul bil".replace("gul", "grön"))
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
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.
Numeriska datatyper
Heltal
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 >>>
Flyttal
Flyttal däremot, tar hänsyn till decimaler till skillnad från heltal.
>>> i = 3.0 >>> j = 2.0 >>> i / j 1.5 >>>
Icke numeriska datatyper
Sträng
En sträng är en datatyp uppbyggd av tecken; bokstäver, siffror eller andra tecken. I Python definieras den med apostrofer ''
eller citationstecken""
.
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.
>>> 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ån0
.
Boolesk (boolean, bool)
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
"Hello World" i Python:
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 xrange(100))
Ceasars rotationskrypto
Julius Ceasar roterade alfabetet för att kryptera sina meddelanden. 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 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 epost-adresser i webbsidor
Det här lilla programmet returnerar webbadresser och epost-adresser 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 s.find('http://') != -1: s = s.split('"') for i in range(len(s)): if s[i].find('http://') != -1: urls.append( s[i] ) emails = [] for s in source: if s.find('@') != -1: s = s.split('"') for i in range(len(s)): if s[i].find('@') != -1: if s[i] != '@import' and s[i].find('mailto') == -1: e = s[i].split('>') m = e[1].split('<') emails.append( m[0] ) return emails, urls
Se även
Referenser
- ↑ ”General Python FAQ”. Python Foundation. http://www.python.org/doc/faq/general/. Läst 2009-03-31.
Externa länkar
- Pythons hemsida
- Python Tutorial
- wxPython, ett bibliotek med rutiner för GUI-programmering för Python.
- Zope, en applikationsserver för Python.
- Dive Into Python, en introduktion till Python för personer som kan andra programspråk.