2012-03-09 22 views
27

Me gustaría obtener una lista de todas las palabras clave de Pythons como cadenas. También sería bastante ingenioso si pudiera hacer algo similar para las funciones integradas.¿Es posible obtener una lista de palabras clave en Python?

Algo como esto:

import syntax 
print syntax.keywords 
# prints ['print', 'if', 'for', etc...] 
+1

qué cadena se puede esperar en esta lista de instrucciones de asignación? O para declaraciones de expresión? ¿O prefieres una lista de todas las palabras clave? –

+4

De todos modos: consulte la documentación del lenguaje Python: [Sentencias simples] (http://docs.python.org/reference/simple_stmts.html), [Sentencias Compund] (http://docs.python.org/reference/compound_stmts. html) y [Palabras clave] (http://docs.python.org/reference/lexical_analysis.html#keywords). –

+1

¿Podría proporcionarnos algunos antecedentes de por qué lo necesita? –

Respuesta

53

Se preguntó sobre declaraciones, mientras que muestra palabras clave en su ejemplo de salida.

Si usted está buscando palabras clave , son todos los que figuran en el módulo keyword:

>>> import keyword 
>>> keyword.kwlist 
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 
'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 
'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 
'while', 'with', 'yield'] 

Desde el keyword.kwlist doc:

secuencia que contiene todas las palabras clave definidas por el intérprete . Si se definen palabras clave para que solo estén activas cuando las declaraciones particulares __future__ estén en vigor, también se incluirán.

+0

No publiqué esta respuesta ya que el OP solicitó "declaraciones", no "palabras clave", aunque es muy posible que esta sea la respuesta que el OP está buscando. –

+0

Esto funcionará para mis propósitos, ¡gracias! – rectangletangle

+0

TBH Acabo de ver su ejemplo y ni siquiera lo noté. Todos 'print',' for' y 'if' están en la lista de arriba, así que ... De todos modos, pondré una advertencia en la respuesta para que los usuarios vengan. –

8

Las funciones integradas están en un módulo llamado __builtins__, por lo que:

dir(__builtins__) 
+0

Si este código está en un módulo importado, creo que sería '__builtins__. Keys()' en su lugar. O en Python 3, 'import builtins' luego' dir (builtins) 'independientemente del módulo. https://docs.python.org/3/reference/executionmodel.html "De forma predeterminada, cuando está en el módulo' __main__', '__builtins__' es el módulo incorporado' builtins'; cuando está en cualquier otro módulo, '__builtins__ 'es un alias para el diccionario del módulo' builtins' en sí mismo. –

4

La aproximación más cercana que se me ocurre es la siguiente:

from keyword import kwlist 
print kwlist 

El módulo estándar keyword se genera de forma automática. Para otras cosas relacionadas con el análisis de Python desde Python, verifique el conjunto de módulos language services.

En cuanto a la lista de las órdenes internas no me queda claro si está pidiendo artículos en el módulo __builtin__ o funciones en ese paquete que se implementan directamente en el intérprete CPython:

import __builtin__ as B 
from inspect import isbuiltin 

# You're either asking for this: 
print [name for name in dir(B) if isbuiltin(getattr(B, name))] 

# Or this: 
print dir(B) 
1

>>> help()

ayuda> palabras clave

Aquí hay una lista de las palabras clave de Python. Ingrese cualquier palabra clave para obtener más ayuda.

False def if raise

None del import return

True elif in try

and else is while

as except lambda with

assert finally nonlocal yield

break for not

class from or

continue global pass

Cuestiones relacionadas