exec_stmt |
::= | "exec" expression
["in" expression ["," expression]] |
Instrukcja exec pozwala na dynamiczne wykonywanie kodu w Pythonie. Wartością pierwszego wyrażenia wchodzącego w skład instrukcji powinien być napis, obiekt plikowy w trybie otwartym lub obiekt kodu. Jeśli wartością jest napis, jest on analizowany jako zestaw instrukcji Pythona, a następnie wykonywany (o ile nie wystąpi błąd składniowy). Jeśli to otwarty plik, jest on analizowany do napotkania końca pliku a następnie wykonywany (podobnie jak napis). Obiekt kodu podlega bezpośredniemu wykonaniu.
W każdym z przypadków, jeśli zostaną pominięte części opcjonalne, kod będzie wykonany w bieżącym zasięgu. jeśli zostanie podane tylko pierwsze wyrażenie po słowie in, jego wartością powinien być słownik, który zostanie użyty w roli zarówno globalnej, jak i lokalnej przestrzeni nazw. Jeśli podane zostaną dwa wyrażenia, wartościami obu powinny być słowniki, z których pierwszy zostanie użyty jako globalna przestrzeń nazw, zaś drugi jako lokalna.
Jako efekt uboczny, implementacja instrukcji może wstawić do słowników
dodatkowe klucze, poza tymi, które są wstawiane przez wykonywany kod.
Na przykład, aktualna implementacja może dodać odwołanie do słownika
wbudowanego modułu __builtin__ jako klucz o nazwie
__builtins__.
Podpowiedź dla programistów: dynamiczne wartościowanie wyrażeń jest możliwe przy użyciu wbudowanej funkcji eval(). Wbudowane funkcje globals() oraz locals() zwracają, odpowiednio, słownik bieżącej globalnej oraz lokalnej przestrzeni nazw, co może się przydać przy przekazywaniu argumentów do funkcji exec.
Zajrzyj do Informacji na temat tej publikacji... aby pomóc w jej rozwoju.