16. Appendix¶
16.1. Interaktivt läge¶
Det finns två varianter av den interaktiva REPL. Den klassiska grundläggande tolken stöds på alla plattformar med minimala linjekontrollfunktioner.
I Windows eller Unix-liknande system med stöd för curses
används ett nytt interaktivt skal som standard sedan Python 3.13. Detta stöder färg, redigering av flera rader, historikbläddring och klistra in-läge. För att inaktivera färg, se Styrning av färg för mer information. Funktionstangenterna ger några ytterligare funktioner. F1 öppnar den interaktiva hjälpsidan pydoc
F2 gör det möjligt att bläddra i kommandoradshistoriken utan utdata eller >>> och …-prompter. F3 öppnar ”klistra in-läget”, vilket gör det enklare att klistra in större kodblock. Tryck på F3 för att återgå till den vanliga prompten.
När du använder det nya interaktiva skalet, avsluta skalet genom att skriva exit eller quit. Det är inte nödvändigt att lägga till samtalsparenteser efter dessa kommandon.
Om det nya interaktiva skalet inte är önskvärt kan det avaktiveras med miljövariabeln PYTHON_BASIC_REPL
.
16.1.1. Felhantering¶
När ett fel inträffar skriver tolken ut ett felmeddelande och en stackspårning. I interaktivt läge återgår den sedan till den primära prompten; när indata kom från en fil avslutas den med en utgångsstatus som inte är noll efter att stackspårningen skrivits ut. (Undantag som hanteras av en except
-klausul i en try
-sats är inte fel i det här sammanhanget) Vissa fel är ovillkorligen fatala och orsakar en avslutning med en avslutningsstatus som inte är noll; detta gäller interna inkonsekvenser och vissa fall av minnesbrist. Alla felmeddelanden skrivs till standardfelflödet; normal utdata från utförda kommandon skrivs till standardutdata.
Om du skriver avbrottstecknet (vanligtvis Control-C eller Delete) i den primära eller sekundära prompten avbryts inmatningen och du återgår till den primära prompten. [1] Att skriva ett avbrottstecken medan ett kommando körs ger upphov till undantaget KeyboardInterrupt
, som kan hanteras med en try
-sats.
16.1.2. Exekverbara Python-skript¶
På BSD’ish Unix-system kan Python-skript göras direkt körbara, som shell-skript, genom att lägga till raden
#!/usr/bin/env python3
(förutsatt att tolken finns på användarens PATH
) i början av skriptet och ger filen ett körbart läge. #!
måste vara de två första tecknen i filen. På vissa plattformar måste den första raden avslutas med en Unix-radändelse ('\n'
), inte en Windows-radändelse ('\r\n'
). Observera att hash- eller pundtecknet '#'
används för att starta en kommentar i Python.
Skriptet kan ges ett körbart läge, eller behörighet, med hjälp av kommandot chmod.
$ chmod +x myscript.py
På Windows-system finns det ingen uppfattning om ett ”körbart läge”. Installationsprogrammet för Python associerar automatiskt .py
-filer med python.exe
så att en dubbelklickning på en Python-fil kör den som ett skript. Tillägget kan också vara .pyw
, i så fall undertrycks det konsolfönster som normalt visas.
16.1.3. Den interaktiva startfilen¶
När du använder Python interaktivt är det ofta praktiskt att ha några standardkommandon som körs varje gång tolken startas. Du kan göra detta genom att ställa in en miljövariabel med namnet PYTHONSTARTUP
till namnet på en fil som innehåller dina startkommandon. Detta liknar funktionen .profile
i Unix-skalen.
Den här filen läses bara i interaktiva sessioner, inte när Python läser kommandon från ett skript och inte när /dev/tty
anges som explicit källa för kommandon (vilket annars beter sig som en interaktiv session). Den körs i samma namnrymd där interaktiva kommandon körs, så att objekt som den definierar eller importerar kan användas utan förbehåll i den interaktiva sessionen. Du kan också ändra prompterna sys.ps1
och sys.ps2
i den här filen.
Om du vill läsa ytterligare en startfil från den aktuella katalogen kan du programmera detta i den globala startfilen med hjälp av kod som if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read())
. Om du vill använda startfilen i ett skript måste du göra detta uttryckligen i skriptet:
import os
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
with open(filename) as fobj:
startup_file = fobj.read()
exec(startup_file)
16.1.4. Anpassningsmodulerna¶
Python tillhandahåller två hooks så att du kan anpassa den: sitecustomize och usercustomize. För att se hur det fungerar måste du först hitta platsen för din användares webbplats-paketkatalog. Starta Python och kör den här koden:
>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.x/site-packages'
Nu kan du skapa en fil med namnet usercustomize.py
i den katalogen och lägga in vad du vill i den. Det kommer att påverka varje anrop av Python, såvida det inte startas med alternativet -s
för att inaktivera den automatiska importen.
sitecustomize fungerar på samma sätt, men skapas vanligtvis av en administratör på datorn i den globala katalogen site-packages och importeras före usercustomize. Se dokumentationen för modulen site
för mer information.
Fotnoter