Lagret på mycket hög nivå¶
Funktionerna i det här kapitlet låter dig exekvera Python-källkod som finns i en fil eller en buffert, men de låter dig inte interagera på ett mer detaljerat sätt med tolken.
Flera av dessa funktioner accepterar en startsymbol från grammatiken som en parameter. De tillgängliga startsymbolerna är Py_eval_input
, Py_file_input
och Py_single_input
. Dessa beskrivs efter de funktioner som accepterar dem som parametrar.
Notera också att flera av dessa funktioner tar FILE* parametrar. En särskild fråga som måste hanteras noggrant är att FILE
-strukturen för olika C-bibliotek kan vara olika och inkompatibla. Under Windows (åtminstone) är det möjligt för dynamiskt länkade tillägg att faktiskt använda olika bibliotek, så man bör vara noga med att FILE*-parametrar bara skickas till dessa funktioner om det är säkert att de skapades av samma bibliotek som Python-körtiden använder.
-
int PyRun_AnyFile(FILE *fp, const char *filename)¶
Detta är ett förenklat gränssnitt till
PyRun_AnyFileExFlags()
nedan, där closeit är satt till0
och flags är satt tillNULL
.
-
int PyRun_AnyFileFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)¶
Detta är ett förenklat gränssnitt till
PyRun_AnyFileExFlags()
nedan, där closeit-argumentet är satt till0
.
-
int PyRun_AnyFileEx(FILE *fp, const char *filename, int closeit)¶
Detta är ett förenklat gränssnitt till
PyRun_AnyFileExFlags()
nedan, där argumentet flags är satt tillNULL
.
-
int PyRun_AnyFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags)¶
Om fp hänvisar till en fil som är kopplad till en interaktiv enhet (konsol eller terminalinmatning eller Unix pseudoterminal), returneras värdet av
PyRun_InteractiveLoop()
, annars returneras resultatet avPyRun_SimpleFile()
. filnamn avkodas från filsystemets kodning (sys.getfilesystemencoding()
). Om filename ärNULL
använder den här funktionen"???"
som filnamn. Om closeit är true, stängs filen innanPyRun_SimpleFileExFlags()
returneras.
-
int PyRun_SimpleString(const char *command)¶
Detta är ett förenklat gränssnitt till
PyRun_SimpleStringFlags()
nedan, där argumentetPyCompilerFlags
* är satt tillNULL
.
-
int PyRun_SimpleStringFlags(const char *command, PyCompilerFlags *flags)¶
Exekverar Python-källkoden från command i modulen
__main__
i enlighet med argumentet flags. Om__main__
inte redan finns, skapas den. Returnerar0
vid framgång eller-1
om ett undantag uppstod. Om det uppstod ett fel finns det inget sätt att få information om undantaget. För betydelsen av flags, se nedan.Observera att om en annars ohanterad
SystemExit
uppstår, kommer denna funktion inte att returnera-1
, utan avsluta processen, så länge somPyConfig.inspect
är noll.
-
int PyRun_SimpleFile(FILE *fp, const char *filename)¶
Detta är ett förenklat gränssnitt till
PyRun_SimpleFileExFlags()
nedan, där closeit är satt till0
och flags är satt tillNULL
.
-
int PyRun_SimpleFileEx(FILE *fp, const char *filename, int closeit)¶
Detta är ett förenklat gränssnitt till
PyRun_SimpleFileExFlags()
nedan, där flags är satt tillNULL
.
-
int PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags)¶
Liknar
PyRun_SimpleStringFlags()
, men Python-källkoden läses från fp istället för en sträng i minnet. filename ska vara namnet på filen, det avkodas från filesystem encoding and error handler. Om closeit är true, stängs filen innanPyRun_SimpleFileExFlags()
returneras.Anteckning
På Windows bör fp öppnas i binärt läge (t.ex.
fopen(filename, "rb")
). Annars kan det hända att Python inte hanterar skriptfiler med LF-radavslut korrekt.
-
int PyRun_InteractiveOne(FILE *fp, const char *filename)¶
Detta är ett förenklat gränssnitt till
PyRun_InteractiveOneFlags()
nedan, där flags är satt tillNULL
.
-
int PyRun_InteractiveOneFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)¶
Läs och kör ett enda uttalande från en fil som är kopplad till en interaktiv enhet enligt argumentet flags. Användaren kommer att uppmanas att använda
sys.ps1
ochsys.ps2
. filnamn avkodas från filesystem encoding and error handler.Returnerar
0
när indata exekverades framgångsrikt,-1
om det fanns ett undantag, eller en felkod frånerrcode.h
include-filen som distribueras som en del av Python om det fanns ett parse-fel. (Observera atterrcode.h
inte inkluderas avPython.h
, så den måste inkluderas specifikt om det behövs)
-
int PyRun_InteractiveLoop(FILE *fp, const char *filename)¶
Detta är ett förenklat gränssnitt till
PyRun_InteractiveLoopFlags()
nedan, där flags är satt tillNULL
.
-
int PyRun_InteractiveLoopFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)¶
Läs och kör satser från en fil som är kopplad till en interaktiv enhet tills EOF nås. Användaren kommer att uppmanas att använda
sys.ps1
ochsys.ps2
. filnamn avkodas från filesystem encoding and error handler. Returnerar0
vid EOF eller ett negativt tal vid misslyckande.
-
int (*PyOS_InputHook)(void)¶
- En del av Stabil ABI.
Kan ställas in så att den pekar på en funktion med prototypen
int func(void)
. Funktionen kommer att anropas när Pythons tolkprompt är på väg att bli inaktiv och väntar på användarinmatning från terminalen. Returvärdet ignoreras. Åsidosättande av denna hook kan användas för att integrera tolkens prompt med andra händelseslingor, vilket görs iModules/_tkinter.c
i Pythons källkod.Ändrad i version 3.12: Denna funktion anropas endast från huvudtolken.
-
char *(*PyOS_ReadlineFunctionPointer)(FILE*, FILE*, const char*)¶
Kan sättas till att peka på en funktion med prototypen
char *func(FILE *stdin, FILE *stdout, char *prompt)
, som åsidosätter standardfunktionen som används för att läsa en enda rad indata vid tolkens prompt. Funktionen förväntas mata ut strängen prompt om den inte ärNULL
, och sedan läsa en rad indata från den angivna standardinmatningsfilen och returnera den resulterande strängen. Exempel: Modulenreadline
sätter denna hook för att tillhandahålla funktioner för radredigering och tabbkomplettering.Resultatet måste vara en sträng som allokerats av
PyMem_RawMalloc()
ellerPyMem_RawRealloc()
, ellerNULL
om ett fel inträffat.Ändrad i version 3.4: Resultatet måste allokeras med
PyMem_RawMalloc()
ellerPyMem_RawRealloc()
, istället för att allokeras medPyMem_Malloc()
ellerPyMem_Realloc()
.Ändrad i version 3.12: Denna funktion anropas endast från huvudtolken.
-
PyObject *PyRun_String(const char *str, int start, PyObject *globals, PyObject *locals)¶
- Returnera värde: Ny referens.
Detta är ett förenklat gränssnitt till
PyRun_StringFlags()
nedan, där flags är satt tillNULL
.
-
PyObject *PyRun_StringFlags(const char *str, int start, PyObject *globals, PyObject *locals, PyCompilerFlags *flags)¶
- Returnera värde: Ny referens.
Exekvera Python-källkod från str i det sammanhang som anges av objekten globals och locals med de kompilatorflaggor som anges av flags. globals måste vara en ordbok; locals kan vara vilket objekt som helst som implementerar mappningsprotokollet. Parametern start anger den starttoken som ska användas för att analysera källkoden.
Returnerar resultatet av att exekvera koden som ett Python-objekt, eller
NULL
om ett undantag uppstod.
-
PyObject *PyRun_File(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals)¶
- Returnera värde: Ny referens.
Detta är ett förenklat gränssnitt till
PyRun_FileExFlags()
nedan, där closeit är satt till0
och flags är satt tillNULL
.
-
PyObject *PyRun_FileEx(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, int closeit)¶
- Returnera värde: Ny referens.
Detta är ett förenklat gränssnitt till
PyRun_FileExFlags()
nedan, där flags är satt tillNULL
.
-
PyObject *PyRun_FileFlags(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, PyCompilerFlags *flags)¶
- Returnera värde: Ny referens.
Detta är ett förenklat gränssnitt till
PyRun_FileExFlags()
nedan, där closeit är satt till0
.
-
PyObject *PyRun_FileExFlags(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, int closeit, PyCompilerFlags *flags)¶
- Returnera värde: Ny referens.
Liknar
PyRun_StringFlags()
, men Python-källkoden läses från fp istället för en sträng i minnet. filename bör vara namnet på filen, det avkodas från filesystem encoding and error handler. Om closeit är true, stängs filen innanPyRun_FileExFlags()
returneras.
-
PyObject *Py_CompileString(const char *str, const char *filename, int start)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Detta är ett förenklat gränssnitt till
Py_CompileStringFlags()
nedan, där flags är satt tillNULL
.
-
PyObject *Py_CompileStringFlags(const char *str, const char *filename, int start, PyCompilerFlags *flags)¶
- Returnera värde: Ny referens.
Detta är ett förenklat gränssnitt till
Py_CompileStringExFlags()
nedan, med optimize satt till-1
.
-
PyObject *Py_CompileStringObject(const char *str, PyObject *filename, int start, PyCompilerFlags *flags, int optimize)¶
- Returnera värde: Ny referens.
Analyserar och kompilerar Python-källkoden i str och returnerar det resulterande kodobjektet. Starttoken ges av start; detta kan användas för att begränsa den kod som kan kompileras och bör vara
Py_eval_input
,Py_file_input
ellerPy_single_input
. Filnamnet som anges av filnamn används för att konstruera kodobjektet och kan visas i spårningar ellerSyntaxError
undantagsmeddelanden. Detta returnerarNULL
om koden inte kan analyseras eller kompileras.Heltalet optimize anger kompilatorns optimeringsnivå; ett värde på
-1
väljer tolkens optimeringsnivå som anges i-O
-alternativen. Explicita nivåer är0
(ingen optimering;__debug__
är sant),1
(asserts tas bort,__debug__
är falskt) eller2
(docstrings tas också bort).Tillagd i version 3.4.
-
PyObject *Py_CompileStringExFlags(const char *str, const char *filename, int start, PyCompilerFlags *flags, int optimize)¶
- Returnera värde: Ny referens.
Som
Py_CompileStringObject()
, men filnamn är en byte-sträng avkodad från filesystem encoding and error handler.Tillagd i version 3.2.
-
PyObject *PyEval_EvalCode(PyObject *co, PyObject *globals, PyObject *locals)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Detta är ett förenklat gränssnitt till
PyEval_EvalCodeEx()
, med bara kodobjektet samt globala och lokala variabler. De andra argumenten sätts tillNULL
.
-
PyObject *PyEval_EvalCodeEx(PyObject *co, PyObject *globals, PyObject *locals, PyObject *const *args, int argcount, PyObject *const *kws, int kwcount, PyObject *const *defs, int defcount, PyObject *kwdefs, PyObject *closure)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Utvärdera ett förkompilerat kodobjekt, givet en viss miljö för dess utvärdering. Denna miljö består av en ordbok med globala variabler, ett mappningsobjekt med lokala variabler, matriser med argument, nyckelord och standardvärden, en ordbok med standardvärden för keyword-only-argument och en closure-tupel av celler.
-
PyObject *PyEval_EvalFrame(PyFrameObject *f)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Utvärderar en exekveringsram. Detta är ett förenklat gränssnitt till
PyEval_EvalFrameEx()
, för bakåtkompatibilitet.
-
PyObject *PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Detta är den huvudsakliga, oförfalskade funktionen för Python-tolkning. Kodobjektet som är associerat med exekveringsramen f exekveras, tolkar bytekod och utför anrop efter behov. Den extra parametern throwflag kan för det mesta ignoreras - om den är sann leder den till att ett undantag omedelbart kastas; detta används för
throw()
-metoderna för generatorobjekt.Ändrad i version 3.4: Denna funktion innehåller nu ett debug-assertion för att säkerställa att den inte i tysthet kasserar ett aktivt undantag.
-
int PyEval_MergeCompilerFlags(PyCompilerFlags *cf)¶
Denna funktion ändrar flaggorna för den aktuella utvärderingsramen och returnerar true om den lyckas, false om den misslyckas.
-
int Py_eval_input¶
Startsymbolen från Pythons grammatik för isolerade uttryck; för användning med
Py_CompileString()
.
-
int Py_file_input¶
Startsymbolen från Python-grammatiken för sekvenser av satser som läses från en fil eller annan källa; för användning med
Py_CompileString()
. Detta är den symbol som ska användas när man kompilerar godtyckligt lång Python-källkod.
-
int Py_single_input¶
Startsymbolen från Python-grammatiken för ett enda uttalande; för användning med
Py_CompileString()
. Detta är den symbol som används för den interaktiva tolkens loop.
-
struct PyCompilerFlags¶
Detta är den struktur som används för att hålla kompilatorflaggor. I fall där kod endast kompileras, skickas den som
int flags
, och i fall där kod exekveras, skickas den somPyCompilerFlags *flags
. I det här fallet kanfrom __future__ import
modifiera flags.När
PyCompilerFlags *flags
ärNULL
,cf_flags
behandlas som lika med0
, och alla ändringar på grund avfrom __future__ import
kasseras.-
int cf_flags¶
Flaggor för kompilator.
-
int cf_feature_version¶
cf_feature_version är den mindre Python-versionen. Den bör initialiseras till
PY_MINOR_VERSION
.Fältet ignoreras som standard, det används endast om flaggan
PyCF_ONLY_AST
är inställd icf_flags
.
Ändrad i version 3.8: Fältet cf_feature_version har lagts till.
De tillgängliga kompilatorflaggorna är tillgängliga som makron:
-
PyCF_ALLOW_TOP_LEVEL_AWAIT¶
-
PyCF_ONLY_AST¶
-
PyCF_OPTIMIZED_AST¶
-
PyCF_TYPE_COMMENTS¶
Se compiler flags i dokumentationen av Python-modulen
ast
, som exporterar dessa konstanter under samma namn.
”
PyCF
”-flaggorna ovan kan kombineras med ”CO_FUTURE
”-flaggor somCO_FUTURE_ANNOTATIONS
för att aktivera funktioner som normalt kan väljas med future statements. Se Kod Objekt Flaggor för en fullständig lista.-
int cf_flags¶