python keyword bareword

Palabras desnudas/nuevas palabras clave en Python



keyword bareword (1)

Solo he intentado esto en el REPL, fuera de cualquier bloque, hasta ahora. También es posible hacer que funcione en otros lugares.

Pongo esto en mi archivo de inicio de python:

def bareWordHandler(type_, value, traceback_): if isinstance(value, SyntaxError): import traceback # You can probably modify this next line so that it''ll work within blocks, as well as outside them: bareWords = traceback.format_exception(type_, value, traceback_)[1].split() # At this point we have the raw string that was entered. # Use whatever logic you want on it to decide what to do. if bareWords[0] == ''Awesome'': print('' ''.join(bareWords[1:]).upper() + ''!'') return bareWordsHandler.originalExceptHookFunction(type_, value, traceback_) import sys bareWordsHandler.originalExceptHookFunction = sys.excepthook sys.excepthook = bareWordsHandler

Palabras de demostración de sesión de REPL rápido:

>>> Awesome bare words BARE WORDS!

Utilizar responsablemente.

Edición: Aquí hay un ejemplo más útil. Añadí en una palabra clave de run .

if bareWords[0] == ''from'' and bareWords[2] == ''run'': atPrompt.autoRun = [''from '' + bareWords[1] + '' import '' + bareWords[3].split(''('')[0], '' ''.join(bareWords[3:])] return

atPrompt.autoRun es una lista de variables que, cuando se muestra mi solicitud, se verificará y se devolverá automáticamente. Entonces, por ejemplo, puedo hacer esto:

>>> from loadBalanceTester run loadBalancerTest(runJar = False)

Y esto se interpreta como:

from loadBalancerTest import loadBalancerTest loadBalancerTest(runJar = False)

Es como una macro, es común que yo quiera hacer este tipo de cosas, así que decidí agregar una palabra clave que me permita hacerlo con menos pulsaciones de teclas.

Quería ver si era posible definir nuevas palabras clave o, como se les llama en la charla Destroy All Software de WAT cuando se habla de Ruby, palabras simples, en Python.

Se me ocurrió una respuesta que no pude encontrar en ningún otro lugar, así que decidí compartir el estilo de preguntas y respuestas en StackOverflow.