Avez-vous déjà voulu ** exécuter un interpréteur dans un script Python **? Vous pouvez utiliser les fonctions et les classes que vous avez créées depuis le début, et vous pouvez également exécuter du code Python ordinaire. N'est-ce pas sympa!
En Python, il existe une ** bibliothèque standard ** appelée code.py
qui peut exécuter des interpréteurs.
myconsole.py
import code
console = code.InteractiveConsole(locals=locals()) # <- locals=locals()Important
console.interact()
Écrivez comme ça. Ici, code.InteractiveConsole
reçoit l'argument locals = locals ()
,
locals ()
est une fonction ** qui renvoie toutes les valeurs des * variables de zone locale d'elle-même (ici dans le script) au format dictionnaire.
En donnant ceci comme argument, ** les fonctions du script, etc. sont passées à l'interpréteur python lancé **
Lorsque vous exécutez ce script
$ 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)
>>>
C'est ainsi que l'interpréteur Python fonctionne!
J'ai utilisé ce code.py
de cette façon.
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()
Ce script python a une fonction pour convertir le code couleur. Quand j'exécute ce script ...
$ 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']
>>>
De cette manière, l'interpréteur Python est démarré et vous pouvez utiliser la fonction créée ** sans rien importer.
La raison pour laquelle vous n'avez rien à importer est que le code ci-dessus dit locals = locals ()
.
Si vous n'avez pas défini locaux = locaux ()
ici,
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__']
>>>
De cette manière, vous ne pourrez pas utiliser les fonctions du script.
Recommended Posts