Wollten Sie schon immer einen Interpreter in einem Python-Skript ausführen? Sie können die Funktionen und Klassen verwenden, die Sie von Anfang an erstellt haben, und Sie können auch normalen Python-Code ausführen. Ist es nicht schön?
In Python gibt es eine ** Standardbibliothek ** namens code.py
, mit der Sie Interpreter ausführen können.
myconsole.py
import code
console = code.InteractiveConsole(locals=locals()) # <- locals=locals()Wichtig
console.interact()
Schreiben Sie so. Hier erhält code.InteractiveConsole
das Argument Local = Locals ()
,
local ()
ist eine ** Funktion, die alle Werte der * lokalen Bereichsvariablen von sich selbst (hier im Skript) im Wörterbuchformat zurückgibt.
Wenn Sie dies als Argument angeben, werden ** Funktionen im Skript usw. an den gestarteten Python-Interpreter übergeben **
Wenn Sie dieses Skript ausführen
$ python myconsole.py
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
So läuft der Python-Interpreter!
Ich habe diese code.py
auf diese Weise verwendet.
color.py
import code
def split_code(colorcode, sep=2):
for index, letter in enumerate(colorcode, start=1):
if index == 1:
continue
elif index % sep == 0:
yield colorcode[index-sep:index]
def get_rgb(colorcode):
result = []
for element in split_code(colorcode):
result.append( int(element, 16) )
return result
def get_colorcode(r, g, b):
code = hex(r) + hex(g) + hex(b)
result = list(split_code(code))
return "".join(result[1::2])
if __name__ == "__main__":
code.InteractiveConsole(locals=locals()).interact()
Dieses Python-Skript hat eine Funktion zum Konvertieren des Farbcodes. Wenn ich dieses Skript ausführe ...
$ python color.py
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> dir()
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'split_code', 'code', 'get_colorcode', 'get_rgb']
>>>
Auf diese Weise wird der Python-Interpreter gestartet und ** Sie können die erstellte Funktion verwenden, ohne etwas zu importieren **. Der Grund, warum Sie nichts importieren müssen, ist, dass der obige Code "local = local ()" lautet.
Wenn Sie hier nicht Locals = Locals ()
gesetzt haben,
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> dir()
['__builtins__', '__doc__', '__name__']
>>>
Auf diese Weise können Sie die Funktionen im Skript nicht verwenden.
Recommended Posts