Allmänna frågor och svar om Python¶
Allmän information¶
Vad är Python?¶
Python är ett tolkat, interaktivt, objektorienterat programmeringsspråk. Det innehåller moduler, undantag, dynamisk typning, dynamiska datatyper på mycket hög nivå och klasser. Det stöder flera programmeringsparadigm utöver objektorienterad programmering, t.ex. procedurell och funktionell programmering. Python kombinerar enastående kraft med en mycket tydlig syntax. Det har gränssnitt mot många systemanrop och bibliotek, liksom mot olika fönstersystem, och är utbyggbart i C eller C++. Det är också användbart som ett tilläggsspråk för applikationer som behöver ett programmerbart gränssnitt. Slutligen är Python portabelt: det kan köras på många Unix-varianter, inklusive Linux och macOS, och på Windows.
Om du vill veta mer kan du börja med Python-guiden. Beginner’s Guide to Python länkar till andra inledande handledningar och resurser för att lära sig Python.
Vad är Python Software Foundation?¶
Python Software Foundation är en oberoende icke-vinstdrivande organisation som innehar upphovsrätten till Python version 2.1 och senare. PSF:s uppdrag är att främja teknik med öppen källkod som är relaterad till programmeringsspråket Python och att sprida användningen av Python. PSF:s webbplats finns på https://www.python.org/psf/.
Donationer till PSF är skattebefriade i USA. Om du använder Python och tycker att det är till hjälp, bidra via PSF:s donationssida.
Finns det upphovsrättsliga begränsningar för användningen av Python?¶
Du kan göra vad du vill med källan, så länge du lämnar kvar upphovsrätten och visar den i all dokumentation om Python som du producerar. Om du respekterar upphovsrättsreglerna är det OK att använda Python för kommersiellt bruk, att sälja kopior av Python i källkod eller binär form (modifierad eller omodifierad) eller att sälja produkter som innehåller Python i någon form. Vi skulle naturligtvis fortfarande vilja veta om all kommersiell användning av Python.
Se licenssidan för att hitta ytterligare förklaringar och den fullständiga texten till PSF-licensen.
Python-logotypen är varumärkesskyddad och i vissa fall krävs tillstånd för att använda den. Se Policy för användning av varumärken för mer information.
Varför skapades Python överhuvudtaget?¶
Här är en mycket kort sammanfattning av vad som startade det hela, skriven av Guido van Rossum:
Jag hade lång erfarenhet av att implementera ett tolkat språk i ABC-gruppen på CWI, och genom att arbeta med denna grupp hade jag lärt mig mycket om språkdesign. Detta är ursprunget till många Python-egenskaper, inklusive användningen av indrag för gruppering av satser och införandet av datatyper på mycket hög nivå (även om detaljerna är helt annorlunda i Python).
Jag hade ett antal invändningar mot ABC-språket, men gillade också många av dess funktioner. Det var omöjligt att utöka ABC-språket (eller dess implementering) för att avhjälpa mina klagomål - i själva verket var dess brist på utbyggbarhet ett av dess största problem. Jag hade viss erfarenhet av att använda Modula-2+ och talade med konstruktörerna av Modula-3 och läste Modula-3-rapporten. Modula-3 är ursprunget till syntaxen och semantiken som används för undantag och några andra Python-funktioner.
Jag arbetade i Amoebas grupp för distribuerade operativsystem på CWI. Vi behövde ett bättre sätt att sköta systemadministrationen än genom att skriva C-program eller Bourne Shell-skript, eftersom Amoeba hade ett eget gränssnitt för systemanrop som inte var lätt att komma åt från Bourne Shell. Min erfarenhet av felhantering i Amoeba gjorde mig mycket medveten om vikten av undantag som en funktion i programmeringsspråket.
Det slog mig att ett skriptspråk med en syntax som ABC men med tillgång till Amoebas systemanrop skulle fylla behovet. Jag insåg att det skulle vara dumt att skriva ett Amoeba-specifikt språk, så jag bestämde mig för att jag behövde ett språk som var allmänt utbyggbart.
Under julhelgen 1989 hade jag mycket tid över, så jag bestämde mig för att ge det ett försök. Under det följande året, då jag fortfarande mest arbetade med det på min fritid, användes Python i Amoeba-projektet med ökande framgång, och feedback från kollegor fick mig att lägga till många tidiga förbättringar.
I februari 1991, efter drygt ett års utveckling, bestämde jag mig för att skicka ett inlägg till USENET. Resten finns i filen
Misc/HISTORY
.
Vad är Python bra för?¶
Python är ett allmänt programmeringsspråk på hög nivå som kan användas för att lösa många olika typer av problem.
Språket levereras med ett stort standardbibliotek som täcker områden som strängbehandling (reguljära uttryck, Unicode, beräkning av skillnader mellan filer), internetprotokoll (HTTP, FTP, SMTP, XML-RPC, POP, IMAP), programvaruteknik (enhetstestning, loggning, profilering, parsning av Python-kod) och operativsystemgränssnitt (systemanrop, filsystem, TCP/IP-sockets). Titta på innehållsförteckningen för Pythons standardbibliotek för att få en uppfattning om vad som finns tillgängligt. En mängd olika tillägg från tredje part finns också tillgängliga. Konsultera the Python Package Index för att hitta paket av intresse för dig.
Hur fungerar Pythons versionsnumreringssystem?¶
Python-versionerna är numrerade ”A.B.C” eller ”A.B”:
A är det viktigaste versionsnumret - det höjs bara vid riktigt stora förändringar i språket.
B är det mindre versionsnumret - det ökas för mindre omvälvande förändringar.
C är mikroversionsnumret - det ökas för varje bugfixversion.
Alla releaser är inte bugfixreleaser. Inför lanseringen av en ny funktion görs en serie utvecklingsreleaser som benämns alfa, beta eller releasekandidat. Alphas är tidiga releaser där gränssnitten ännu inte är färdigställda; det är inte oväntat att se en gränssnittsändring mellan två alpha-releaser. Betaversioner är mer stabila och bevarar befintliga gränssnitt men lägger eventuellt till nya moduler, medan releasekandidater är frysta och inte gör några ändringar förutom de som behövs för att åtgärda kritiska buggar.
Alfa-, beta- och releasekandidatversioner har ett ytterligare suffix:
Suffixet för en alpha-version är ”aN” för ett litet antal N.
Suffixet för en betaversion är ”bN” för ett litet antal N.
Suffixet för en release candidate-version är ”rcN” för ett litet antal N.
Med andra ord, alla versioner märkta 2.0aN föregår versionerna märkta 2.0bN, som föregår versionerna märkta 2.0rcN, och de föregår 2.0.
Du kan också hitta versionsnummer med ett ”+” suffix, t.ex. ”2.2+”. Dessa är outgivna versioner, byggda direkt från CPython-utvecklingsförvaret. I praktiken, efter att en slutlig mindre version har gjorts, ökas versionen till nästa mindre version, som blir ”a0”-versionen, t.ex. ”2.4a0”.
Se Developer’s Guide för mer information om utvecklingscykeln, och PEP 387 för att lära dig mer om Pythons policy för bakåtkompatibilitet. Se även dokumentationen för sys.version
, sys.hexversion
och sys.version_info
.
Hur får jag tag på en kopia av Python-källan?¶
Den senaste källdistributionen för Python finns alltid tillgänglig från python.org, https://www.python.org/downloads/. De senaste utvecklingskällorna kan erhållas på https://github.com/python/cpython/.
Källdistributionen är en gzippad tar-fil som innehåller den fullständiga C-källan, dokumentation i Sphinx-format, Python-biblioteksmoduler, exempelprogram och flera användbara delar av fritt distribuerbar programvara. Källan kompileras och körs direkt på de flesta UNIX-plattformar.
Läs avsnittet Getting Started i Python Developer’s Guide för mer information om hur du hämtar källkoden och kompilerar den.
Hur får jag tag på dokumentation om Python?¶
Standarddokumentationen för den aktuella stabila versionen av Python finns på https://docs.python.org/3/. PDF-, klartext- och nedladdningsbara HTML-versioner finns också på https://docs.python.org/3/download.html.
Dokumentationen är skriven i reStructuredText och bearbetad av dokumentationsverktyget Sphinx. Källan reStructuredText för dokumentationen är en del av Python-källdistributionen.
Jag har aldrig programmerat förut. Finns det en Python-handledning?¶
Det finns många handledningar och böcker tillgängliga. I standarddokumentationen ingår Python-guiden.
I Nybörjarguiden finns information för nybörjare som programmerar Python, inklusive listor över självstudier.
Finns det en nyhetsgrupp eller e-postlista som ägnas åt Python?¶
Det finns en nyhetsgrupp, comp.lang.python, och en e-postlista, python-list. Nyhetsgruppen och e-postlistan är gatewayade till varandra – om du kan läsa nyheter är det onödigt att prenumerera på e-postlistan. comp.lang.python är högtrafikerad och får hundratals inlägg varje dag, och Usenet-läsare är ofta bättre på att hantera denna volym.
Tillkännagivanden om nya programversioner och evenemang finns i comp.lang.python.announce, en modererad lista med låg trafik som får cirka fem inlägg per dag. Den finns tillgänglig som the python-announce mailing list.
Mer information om andra e-postlistor och nyhetsgrupper finns på https://www.python.org/community/lists/.
Hur får jag en beta-testversion av Python?¶
Alpha- och betaversioner finns tillgängliga från https://www.python.org/downloads/. Alla utgåvor meddelas i nyhetsgrupperna comp.lang.python och comp.lang.python.announce och på Pythons webbplats https://www.python.org/; ett RSS-flöde med nyheter finns tillgängligt.
Du kan också få tillgång till utvecklingsversionen av Python via Git. Se The Python Developer’s Guide för mer information.
Hur skickar jag in felrapporter och korrigeringar för Python?¶
För att rapportera en bugg eller skicka in en patch, använd problemspåraren på https://github.com/python/cpython/issues.
Mer information om hur Python utvecklas finns i Python Developer’s Guide.
Finns det några publicerade artiklar om Python som jag kan hänvisa till?¶
Det är nog bäst att citera din favoritbok om Python.
Den allra första artikeln om Python skrevs 1991 och är nu ganska föråldrad.
Guido van Rossum och Jelke de Boer, ”Interactively Testing Remote Servers Using the Python Programming Language”, CWI Quarterly, volym 4, nummer 4 (december 1991), Amsterdam, s. 283–303.
Finns det några böcker om Python?¶
Ja, det finns många, och fler publiceras. Se python.org wiki på https://wiki.python.org/moin/PythonBooks för en lista.
Du kan också söka efter ”Python” i nätbokhandlar och filtrera bort Monty Python-referenserna, eller kanske söka efter ”Python” och ”språk”.
Var i världen finns www.python.org?¶
Python-projektets infrastruktur finns över hela världen och hanteras av Python Infrastructure Team. Mer information finns här.
Varför kallas det Python?¶
När han började implementera Python läste Guido van Rossum också de publicerade manusen från ”Monty Python’s Flying Circus”, en BBC-komediserie från 1970-talet. Van Rossum tyckte att han behövde ett namn som var kort, unikt och lite mystiskt, så han bestämde sig för att kalla språket Python.
Måste jag gilla ”Monty Python’s Flying Circus”?¶
Nej, men det hjälper. :)
Python i den verkliga världen¶
Hur stabilt är Python?¶
Mycket stabil. Nya, stabila utgåvor har kommit ut ungefär var 6:e till 18:e månad sedan 1991, och det verkar troligt att detta kommer att fortsätta. Från och med version 3.9 kommer Python att ha en ny funktionsutgåva var 12: e månad (PEP 602).
Utvecklarna ger ut buggfixversioner av äldre versioner, så att stabiliteten i befintliga versioner gradvis förbättras. Buggfixversioner, som anges med en tredje komponent i versionsnumret (t.ex. 3.5.3, 3.6.2), hanteras för stabilitet; endast korrigeringar av kända problem ingår i en buggfixversion och det är garanterat att gränssnitten förblir desamma under en serie buggfixversioner.
De senaste stabila versionerna finns alltid på nedladdningssidan för Python. Python 3.x är den rekommenderade versionen och stöds av de flesta allmänt använda biblioteken. Python 2.x underhålls inte längre.
Hur många människor använder Python?¶
Det finns förmodligen miljontals användare, även om det är svårt att få en exakt siffra.
Python finns tillgängligt för gratis nedladdning, så det finns inga försäljningssiffror, och det finns tillgängligt från många olika webbplatser och paketerat med många Linux-distributioner, så nedladdningsstatistik berättar inte heller hela historien.
Nyhetsgruppen comp.lang.python är mycket aktiv, men det är inte alla Python-användare som skickar inlägg till gruppen eller ens läser den.
Har några betydande projekt genomförts i Python?¶
Se https://www.python.org/about/success för en lista över projekt som använder Python. Om du läser förfaranden för tidigare Python-konferenser hittar du bidrag från många olika företag och organisationer.
Högprofilerade Python-projekt inkluderar Mailman mailing list manager och Zope application server. Flera Linux-distributioner, särskilt Red Hat, har skrivit delar av eller hela sin installations- och systemadministrationsprogramvara i Python. Företag som använder Python internt är bland annat Google, Yahoo och Lucasfilm Ltd.
Vilka nya utvecklingar förväntas för Python i framtiden?¶
Se https://peps.python.org/ för Python Enhancement Proposals (PEPs). PEPs är designdokument som beskriver en föreslagen ny funktion för Python, med en kortfattad teknisk specifikation och en motivering. Leta efter en PEP med titeln ”Python X.Y Release Schedule”, där X.Y är en version som inte har släppts offentligt ännu.
Ny utveckling diskuteras på postlistan python-dev.
Är det rimligt att föreslå inkompatibla ändringar av Python?¶
I allmänhet, nej. Det finns redan miljontals rader Python-kod runt om i världen, så alla förändringar i språket som ogiltigförklarar mer än en mycket liten del av befintliga program måste ogillas. Även om du kan tillhandahålla ett konverteringsprogram finns det fortfarande problemet med att uppdatera all dokumentation; många böcker har skrivits om Python, och vi vill inte ogiltigförklara dem alla i ett enda slag.
Det är nödvändigt att tillhandahålla en gradvis uppgraderingsväg om en funktion måste ändras. PEP 5 beskriver den procedur som följs för att införa bakåtkompatibla ändringar samtidigt som störningarna för användarna minimeras.
Är Python ett bra språk för nybörjarprogrammerare?¶
Ja.
Det är fortfarande vanligt att studenter börjar med ett procedurspråk och statiskt typat språk som Pascal, C eller en delmängd av C++ eller Java. Studenter kan vara bättre betjänta av att lära sig Python som sitt första språk. Python har en mycket enkel och konsekvent syntax och ett stort standardbibliotek och, viktigast av allt, genom att använda Python i en nybörjarkurs i programmering kan eleverna koncentrera sig på viktiga programmeringsfärdigheter som problemnedbrytning och datatypdesign. Med Python kan studenterna snabbt introduceras till grundläggande begrepp som loopar och procedurer. De kan förmodligen till och med arbeta med användardefinierade objekt redan i sin första kurs.
För en student som aldrig har programmerat tidigare verkar det onaturligt att använda ett statiskt typat språk. Det innebär ytterligare komplexitet som studenten måste bemästra och saktar ner tempot i kursen. Studenterna försöker lära sig att tänka som en dator, dela upp problem, utforma konsekventa gränssnitt och kapsla in data. Även om det är viktigt att lära sig använda ett statiskt typat språk på lång sikt är det inte nödvändigtvis det bästa ämnet att ta upp i studenternas första programmeringskurs.
Många andra aspekter av Python gör det till ett bra första språk. Precis som Java har Python ett stort standardbibliotek så att studenterna mycket tidigt i kursen kan tilldelas programmeringsprojekt som gör något. Uppgifterna är inte begränsade till standardprogrammen för fyrfunktionsräknare och checkbalansering. Genom att använda standardbiblioteket kan studenterna få tillfredsställelsen av att arbeta med realistiska applikationer samtidigt som de lär sig grunderna i programmering. Genom att använda standardbiblioteket lär sig eleverna också om återanvändning av kod. Tredjepartsmoduler som PyGame är också till hjälp för att utöka elevernas räckvidd.
Pythons interaktiva tolk gör det möjligt för studenter att testa språkfunktioner medan de programmerar. De kan hålla ett fönster med tolken igång medan de skriver in källan till sitt program i ett annat fönster. Om de inte kan komma ihåg metoderna för en lista kan de göra något liknande:
>>> L = []
>>> dir(L)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__',
'__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__',
'__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__',
'__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__',
'__sizeof__', '__str__', '__subclasshook__', 'append', 'clear',
'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
'reverse', 'sort']
>>> [d for d in dir(L) if '__' not in d]
['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> help(L.append)
Help on built-in function append:
append(...)
L.append(object) -> None -- append object to end
>>> L.append(1)
>>> L
[1]
Med tolken är dokumentationen aldrig långt borta från studenten när de programmerar.
Det finns också bra IDE:er för Python. IDLE är en plattformsoberoende IDE för Python som är skriven i Python med hjälp av Tkinter. Emacs-användare kommer att bli glada över att veta att det finns ett mycket bra Python-läge för Emacs. Alla dessa programmeringsmiljöer erbjuder syntaxmarkering, automatisk indentering och tillgång till den interaktiva tolken när du kodar. Se Python-wikin för en fullständig lista över Python-redigeringsmiljöer.
Om du vill diskutera Pythons användning inom utbildning kan du vara intresserad av att gå med i sändlistan edu-sig.