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.