Python (programspråk)
Python är ett programspråk som lanserades 1991 av Guido van Rossum. Det är vanligt som nybörjarspråk och inom undervisning, men också som generellt programspråk med tillämpning inom många olika domäner. Det har dynamisk typning, varför det ibland beskrivs som ett skriptspråk. Språket utmärks också av att indentering påverkar programflödet. Detta gör programkoden kompakt och anses ge den god läsbarhet.
Python | |
Paradigm | Objektorienterad Imperativ Funktionell Procedurell |
---|---|
Gavs ut | 1991 |
Skapat av | Guido van Rossum |
Utvecklare | Python Software Foundation |
Plattform | Multiplattform |
Licens | Python Software Foundation License |
Webbplats | Officiell webbplats |
Standardfiländelse(r) | py, .pyc, .pyd, .pyo, .pyw, .pyz |
Språket utvecklas som öppen källkod. Till språket hör därför flera utvecklingsmiljöer, ett rikt standardbibliotek och många tredjepartsbibliotek. Dessa har tillämpningsområden inom textbehandling, datorgrafik, spelprogrammering, datavisualisering, vetenskapliga beräkningar, maskininlärning, datamining, grafiska användargränssnitt, webbserverscript, systemautomation/skalskript och programmering av mikrokontroller/inbyggda system.
Version Python 3.0, som släpptes 2008, var en större översyn av språket som inte är bakåtkompatibel, men mycket kod för den sista tidigare versionen Python 2.7.18 och tidigare har levt kvar länge.
Utmärkande drag
redigeraNågot som särskilt utmärker Python är dess "eleganta" och rena programkod[1]. Rader behöver inte avslutas med semikolon, något som annars är vanligt i andra programspråk. Klamrar ('{', '}') eller BEGIN och END 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, enligt Pythons egen hemsida[2].
Språket har stöd för flera olika programmeringsparadigm, bland annat strukturerad proceduriell programmering, objektorienterad programmering och funktionell programmering.
Språket har en effektiv automatisk skräpsamling. Det stödjer textbehandling med regex.
Objektorientering
redigeraObjektorienteringen i Python går längre än den man finner i exempelvis C++, eftersom språkets alla datatyper är baserade på objekt och klasser. Man kan exempelvis skriva:
print("en gul bil".replace("gul", "grön"))
Replace är en inbyggd metod[3] och utskriften blir "en grön bil". Själva strängen fungerar som ett objekt av klassen str, det vill säga en sträng. Vidare stöder Python multipelt arv.
Enkla datatyper
redigeraPython har ett antal enkla datatyper som numeriska (int, float, long, complex). Förutom de numeriska datatyperna finns boolean, sträng, lista, tuple och ordbok[4].
Operatorer
redigeraBeräkningar är centrala för all programmering. Med Python utförs beräkningar av infix operatorer (plus, minus, och så vidare). I Python finns det en mängd operatorer där de enklaste representeras i listan nedan.
Namn | Operator | 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
redigeraHeltal
redigeraHeltal 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
redigeraSträng
redigeraEn 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ån0
.
Boolesk (boolean, bool)
redigeraDatatypen 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
redigeraDet enkla "Hello World"-programmet går enkelt att skriva på en rad.
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
redigeraJulius Caesar roterade enligt Suetonius alfabetet för att kryptera sina meddelanden, Caesarchiffer. Ett inte alltför avancerat krypto, men det går 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
redigeraDet 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
Utvecklingsmiljöer
redigeraEn vanlig utvecklingsmiljö för nybörjare är Idle, med installationsverktyget Pip.
Utvecklingsmiljön Anaconda, med installationsverktyget Conda, används ofta för beräkningar och maskininlärning. Det innehåller verktyget Jupyter notebook, som möjliggör att man interaktivt kan redigera flera olika program och visar resulterande utskrifter i ett och samma dokument, exempelvis en laborationsrapport. Anaconda innehåller kompatibla versioner av bibliotek som NumPy, SciPy och Matplotlib, vilka möjliggör effektiv användning av Python för vetenskapliga beräkningar och datavisualisering.
Referensimplementering
redigeraCPython är referensimplementeringen av Python. Det är skrivet i C, uppfyller C89-standarden med flera utvalda C99-funktioner (med senare C-versioner ute, det anses vara föråldrat;[5][6] CPython innehåller sina egna C-tillägg, men tredjepartstillägg är inte begränsade till äldre C-versioner, kan t.ex. implementeras med C11 eller C++). Den sammanställer Python -program till en mellanliggande bytekod som sedan körs av sin virtuella maskin. CPython distribueras med ett stort standardbibliotek skrivet i en blandning av C och infödda Python. Den är tillgänglig för många plattformar, inklusive Windows (från och med Python 3.9, Python-installationsprogrammet misslyckas medvetet med att installera på Windows 7 och 8;[7] Windows XP stöds till Python 3.5) och de flesta moderna Unix-liknande system, inklusive macOS (och Apple M1 Mac, sedan Python 3.9.1, med experimentell installerare) och inofficiellt stöd för t.ex. VMS. Plattformsportabilitet var en av de tidigaste prioriteringarna, under Python 1 och 2-tidsramen stöds även OS/2 och Solaris; stödet har sedan tappats för många plattformar.
API -dokumentationsgeneratorer
redigeraVerktyg som kan generera dokumentation för Python API inkluderar bland annat pydoc (finns som en del av standardbiblioteket),[8] Sphinx, Pdoc och dess gafflar, Doxygen och Graphviz.[9]
Se även
redigeraReferenser
redigera- ^ ”General Python FAQ”. python.org. Python Software Foundation. http://www.python.org/doc/faq/general/#what-is-python. Läst 5 juli 2009.
- ^ ”What is Python? Executive Summary”. Python documentation. Python Foundation. http://www.python.org/doc/essays/blurb/. Läst 5 juli 2007.
- ^ ”Built-in Types”. Python documentation. Python Foundation. http://docs.python.org/library/stdtypes.html. Läst 5 juli 2007.
- ^ Miller, Bradley M: "Python programming in context", appendix B. Jones and Bartlett Publishers, 2009
- ^ ”Mailman 3 Why aren't we allowing the use of C11? - Python-Dev - python.org” (på engelska). mail.python.org. https://mail.python.org/archives/list/python-dev@python.org/thread/PLXETSQE7PRFXBXN2QY6VNPKUTM6I7OD/.
- ^ ”Issue 35473: Intel compiler (icc) does not fully support C11 Features, including atomics - Python tracker”. bugs.python.org. https://bugs.python.org/issue35473.
- ^ ”Download Python” (på engelska). Python.org. https://www.python.org/downloads/release/python-391.
- ^ Zed Shaw (2017). Learn Python the hard way. Addison-Wesley Professional. ISBN 978-0134692883. Arkiverad från originalet den 6 september 2021. https://web.archive.org/web/20210906151318/https://python.engineering/learn-python-the-hard-way/. Läst 27 september 2021
- ^ ”Documentation Tools” (på engelska). Python.org. https://wiki.python.org/moin/DocumentationTools.
Externa länkar
redigera- Wikimedia Commons har media som rör Python (programspråk).
- Pythons hemsida
- Python Tutorial
- wxPython, ett bibliotek med rutiner för GUI-programmering för Python.
- Zope, en applikationsserver för Python.